From a62661e9ff33b1555d541466f02793410caab268 Mon Sep 17 00:00:00 2001 From: "zhangf@suq.cn" Date: Wed, 17 Dec 2025 10:43:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(user):=20=E6=96=B0=E5=A2=9E=E7=A8=BF?= =?UTF-8?q?=E4=BB=B6=E6=8E=A5=E6=94=B6=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在投稿记录中增加 media_id 字段以关联媒体资源 - 创建稿件接收记录控制器和对应的服务类 - 实现列表查询接口,支持按媒体名称、标题、状态及时间筛选 - 配置路由规则,新增 /index 接口用于访问稿件记录列表 - 添加与在线媒体模型的关联关系,便于获取媒体信息 - 引入分页与排序参数处理工具,优化数据展示逻辑 --- .../CreationArticleReceiveRecordsController.php | 21 +++++++++ app/model/user/CreationArticleReceiveRecords.php | 5 +++ app/route/route.php | 3 ++ .../admin/CreationArticleReceiveRecordsService.php | 52 ++++++++++++++++++++++ app/service/user/ApiService.php | 1 + 5 files changed, 82 insertions(+) create mode 100644 app/controller/user/CreationArticleReceiveRecordsController.php create mode 100644 app/service/admin/CreationArticleReceiveRecordsService.php diff --git a/app/controller/user/CreationArticleReceiveRecordsController.php b/app/controller/user/CreationArticleReceiveRecordsController.php new file mode 100644 index 0000000..87ab4b5 --- /dev/null +++ b/app/controller/user/CreationArticleReceiveRecordsController.php @@ -0,0 +1,21 @@ + '', + 'title' => '', + 'status' => '', + 'begin_time' => '', + 'end_time' => '' + ]); + return success($service->listData($params)); + } + +} \ No newline at end of file diff --git a/app/model/user/CreationArticleReceiveRecords.php b/app/model/user/CreationArticleReceiveRecords.php index d15c390..d3ecc76 100644 --- a/app/model/user/CreationArticleReceiveRecords.php +++ b/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'); + } } \ No newline at end of file diff --git a/app/route/route.php b/app/route/route.php index bc32a2c..3d73444 100644 --- a/app/route/route.php +++ b/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 diff --git a/app/service/admin/CreationArticleReceiveRecordsService.php b/app/service/admin/CreationArticleReceiveRecordsService.php new file mode 100644 index 0000000..9cc6efa --- /dev/null +++ b/app/service/admin/CreationArticleReceiveRecordsService.php @@ -0,0 +1,52 @@ +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'); + } + +} \ No newline at end of file diff --git a/app/service/user/ApiService.php b/app/service/user/ApiService.php index 519bb3e..329be13 100644 --- a/app/service/user/ApiService.php +++ b/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'],