Browse Source

feat(replica): 新增全网爆文复刻功能模块

- 新增爆文复刻模型ExpiosiveReplica
- 新增控制器ExpiosiveReplicaController实现CURD操作
- 新增数据访问层ExpiosiveReplicaDao
- 新增服务层ExpiosiveRep
master
zhangf@suq.cn 6 days ago
parent
commit
945c350269
  1. 46
      app/controller/ExpiosiveReplicaController.php
  2. 15
      app/dao/ExpiosiveReplicaDao.php
  3. 33
      app/model/ExpiosiveReplica.php
  4. 15
      app/route/route.php
  5. 106
      app/service/ExpiosiveReplicaService.php
  6. 21
      app/validate/ExpiosiveReplicaValidate.php

46
app/controller/ExpiosiveReplicaController.php

@ -0,0 +1,46 @@
<?php
namespace app\controller;
use app\service\ExpiosiveReplicaService;
use app\validate\ExpiosiveReplicaValidate;
use support\Response;
class ExpiosiveReplicaController
{
public function save(ExpiosiveReplicaService $service): Response
{
$params = requestOnly([
'url' => '',
'portrait_category_id' => '',
'ai_command_id' => ''
]);
validate(ExpiosiveReplicaValidate::class)->check($params, 'save');
return success($service->saveData($params));
}
public function index(ExpiosiveReplicaService $service): Response
{
$params = requestOnly([
'begin_time' => '',
'end_time' => ''
]);
return success($service->listData($params));
}
public function read(ExpiosiveReplicaService $service): Response
{
$id = input('id');
return success($service->readData($id));
}
public function delete(ExpiosiveReplicaService $service): Response
{
$ids = input('ids');
return success($service->deleteData($ids));
}
public function pureIndex(ExpiosiveReplicaService $service)
{
return success($service->selectData());
}
}

15
app/dao/ExpiosiveReplicaDao.php

@ -0,0 +1,15 @@
<?php
namespace app\dao;
use app\model\ExpiosiveReplica;
use plugin\piadmin\app\base\UserBaseDao;
class ExpiosiveReplicaDao extends UserBaseDao
{
protected function setModel(): string
{
return ExpiosiveReplica::class;
}
}

33
app/model/ExpiosiveReplica.php

@ -0,0 +1,33 @@
<?php
namespace app\model;
use plugin\piadmin\app\base\BaseModel;
/**
* AI创作指令模型
*/
class ExpiosiveReplica extends BaseModel
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'geo_explosive_replica';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = 'id';
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = true;
}

15
app/route/route.php

@ -7,6 +7,7 @@ use app\controller\CreationTaskController;
use app\controller\DistillationQuestionsController;
use app\controller\EnterprisePortraitCategoryController;
use app\controller\EnterprisePortraitLibraryController;
use app\controller\ExpiosiveReplicaController;
use app\controller\GlobalProxyController;
use app\controller\KnowledgeLibraryController;
use app\controller\DistillationWordController;
@ -144,6 +145,20 @@ Route::group('/service/v1', function () {
});
});
//全网爆文复刻
Route::group('/replica', function () {
//新增
Route::post('/save', [ExpiosiveReplicaController::class, 'save'])->setParams(['perm' => ['replicaSave']]);
//列表
Route::get('/index', [ExpiosiveReplicaController::class, 'index'])->setParams(['perm' => ['replicaIndex']]);
//详情
Route::get('/read', [ExpiosiveReplicaController::class, 'read'])->setParams(['perm' => ['replicaRead']]);
//删除
Route::post('/delete', [ExpiosiveReplicaController::class, 'delete'])->setParams(['perm' => ['replicaDelete']]);
//下拉数据
Route::get('/pure/index', [ExpiosiveReplicaController::class, 'pureIndex'])->setParams(['perm' => 'replicaPureIndex']);
});
//全局代理IP
Route::group('/proxy', function () {
//新增

106
app/service/ExpiosiveReplicaService.php

@ -0,0 +1,106 @@
<?php
namespace app\service;
use app\dao\ExpiosiveReplicaDao;
use plugin\piadmin\app\base\BaseService;
use plugin\piadmin\app\exception\ApiException;
use plugin\piadmin\app\utils\RequestUtils;
use support\think\Db;
class ExpiosiveReplicaService extends BaseService
{
protected $dao;
public function __construct(ExpiosiveReplicaDao $dao)
{
$this->dao = $dao;
}
/**
* 保存信息
* @param array $params
* @return array
*/
public function saveData(array $params): array
{
Db::startTrans();
try {
$params['name'] = '全网爆文复刻[' . date('Y-m-d H:i') . ']';
$data = $this->dao->save($params);
Db::commit();
// 投递消息
} catch (\Exception $exception) {
Db::rollback();
throw new ApiException($exception->getMessage());
}
return $data->toArray();
}
/**
* 获取列表
* @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['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, '*', $page, $limit, "$sortField $sortRule");
$count = $this->dao->getCount($query);
return compact('list', 'count');
}
/**
* 获取信息
* @param mixed $id
* @return array
*/
public function readData(mixed $id): array
{
$replica = $this->dao->get(['id' => $id]);
if (empty($replica)) {
throw new ApiException('数据不存在');
}
return $replica->toArray();
}
/**
* 删除信息
* @param mixed $id
* @return array
*/
public function deleteData(array $ids): array
{
// 落库
Db::startTrans();
try {
$this->dao->update([['id', 'in', $ids]], ['delete_time' => time()]);
Db::commit();
} catch (\Exception $exception) {
Db::rollback();
throw new ApiException($exception->getMessage());
}
return ['id' => $ids];
}
public function selectData()
{
$query = [
'delete_time' => 0
];
$list = $this->dao->getList($query);
return $list;
}
}

21
app/validate/ExpiosiveReplicaValidate.php

@ -0,0 +1,21 @@
<?php
namespace app\validate;
use plugin\piadmin\app\base\BaseValidate;
class ExpiosiveReplicaValidate extends BaseValidate
{
protected $group = [
'save' => [
'url' => 'require',
'portrait_category_id' => 'require|number',
'ai_command_id' => 'require|number'
],
];
protected $message = [
'url.require' => '文章链接不能为空',
'portrait_category_id.require' => '文章配图不能为空',
'ai_command_id.require' => '爆文改写指令不能为空',
];
}
Loading…
Cancel
Save