作者 赵彬吉
... ... @@ -67,6 +67,10 @@ class AiBlogAuthorTask extends Command
sleep(10);
continue;
}
if(empty($result['data'])){
sleep(20);
continue;
}
//保存当前项目ai_blog数据
ProjectServer::useProject($info['project_id']);
$this->saveAiBlogAuthor($result['data'] ?? [],$info['project_id']);
... ... @@ -109,16 +113,19 @@ class AiBlogAuthorTask extends Command
return true;
}
$aiBlogAuthorModel = new AiBlogAuthor();
foreach ($data as $v){
$param = [
'author_id'=>$v['id'],
'title'=>$v['title'],
'image'=>str_replace_url($v['picture']),
'description'=>$v['description'],
];
$id = $aiBlogAuthorModel->addReturnId($param);
$route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_AI_BLOG_AUTHOR, $id, $project_id);
$aiBlogAuthorModel->edit(['route'=>$route],['id'=>$id]);
$info = $aiBlogAuthorModel->count(['project_id'=>$project_id]);
if($info === false){
foreach ($data as $v){
$param = [
'author_id'=>$v['id'],
'title'=>$v['title'],
'image'=>str_replace_url($v['picture']),
'description'=>$v['description'],
];
$id = $aiBlogAuthorModel->addReturnId($param);
$route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_AI_BLOG_AUTHOR, $id, $project_id);
$aiBlogAuthorModel->edit(['route'=>$route],['id'=>$id]);
}
}
return true;
}
... ...
... ... @@ -77,6 +77,8 @@ class AiBlogListTask extends Command
ProjectServer::useProject($v['project_id']);
$aiBlogListModel = new AiBlogList();
if(!empty($saveData)){
//写一条路由信息
RouteMap::setRoute('top-blog',RouteMap::SOURCE_AI_BLOG_LIST,0,$v['project_id']);
$aiBlogListModel->truncate();
$aiBlogListModel->insertAll($saveData);
}
... ...
... ... @@ -7,17 +7,13 @@
* @time :2024/9/26 14:19
*/
namespace App\Console\Commands\Project;
namespace App\Console\Commands\LyhTest;
use App\Helper\Common;
use App\Models\Domain\DomainInfo;
use App\Models\Product\Category;
use App\Models\Product\CategoryRelated;
use App\Models\Product\Detail;
use App\Models\Product\Product;
use App\Models\RouteMap\RouteMap;
use App\Models\Visit\Visit;
use App\Models\Visit\VisitItem;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
... ... @@ -41,7 +37,7 @@ class DownloadProject extends Command
protected $description = '导出项目数据';
public function handle(){
ProjectServer::useProject(1225);
ProjectServer::useProject(1646);
echo date('Y-m-d H:i:s') . 'start' . PHP_EOL;
$data = $this->downloadProduct();
DB::disconnect('custom_mysql');
... ... @@ -52,22 +48,23 @@ class DownloadProject extends Command
public function downloadProduct()
{
$product = new Product();
$filed = ['id', 'project_id', 'title' ,'thumb' , 'route' ,'intro','content',
'category_id', 'status','seo_mate'];
// $filed = ['id', 'project_id', 'title' ,'thumb' , 'route' ,'intro','content',
// 'category_id', 'status','seo_mate'];
$filed = ['id','title'];
$this->order = 'sort';
$lists = $product->list(['status'=>1],'id',$filed);
if(!empty($lists)){
$cate_data = $this->getCategoryList();//分类
// $cate_data = $this->getCategoryList();//分类
foreach ($lists as $k => $v){
echo date('Y-m-d H:i:s') . '产品id:'.$v['id'] . PHP_EOL;
$v['url'] = 'https://www.autsikinta.com/' . getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id']);
$v['category_id_text'] = $this->categoryName($v['id'],$cate_data);
//ToDo::处理图片及文件
if(!empty($v['thumb']) && !empty($v['thumb']['url'])){
$v['images'] = getImageUrl($v['thumb']['url']);
}else{
$v['images'] = '';
}
// $v['url'] = 'https://www.autsikinta.com/' . getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id']);
// $v['category_id_text'] = $this->categoryName($v['id'],$cate_data);
// //ToDo::处理图片及文件
// if(!empty($v['thumb']) && !empty($v['thumb']['url'])){
// $v['images'] = getImageUrl($v['thumb']['url']);
// }else{
// $v['images'] = '';
// }
$lists[$k] = $v;
}
}
... ... @@ -148,27 +145,27 @@ class DownloadProject extends Command
$sheet = $spreadsheet->getActiveSheet();
// 添加表头
$sheet->setCellValue('A1', '产品名称');
$sheet->setCellValue('B1', '产品短描述');
$sheet->setCellValue('C1', '产品内容');
$sheet->setCellValue('D1', '产品路由');
$sheet->setCellValue('E1', '产品分类');
$sheet->setCellValue('F1', '产品状态');
$sheet->setCellValue('G1', '产品主图');
$sheet->setCellValue('H1', '产品seo_title');
$sheet->setCellValue('I1', '产品seo_keyword');
$sheet->setCellValue('J1', '产品seo_title');
// $sheet->setCellValue('B1', '产品短描述');
// $sheet->setCellValue('C1', '产品内容');
// $sheet->setCellValue('D1', '产品路由');
// $sheet->setCellValue('E1', '产品分类');
// $sheet->setCellValue('F1', '产品状态');
// $sheet->setCellValue('G1', '产品主图');
// $sheet->setCellValue('H1', '产品seo_title');
// $sheet->setCellValue('I1', '产品seo_keyword');
// $sheet->setCellValue('J1', '产品seo_title');
$rowCount = 2;
foreach ($data as $v) {
$sheet->setCellValue('A' . $rowCount, $v['title']);
$sheet->setCellValue('B' . $rowCount, $v['intro']);
$sheet->setCellValue('C' . $rowCount, $v['content']);
$sheet->setCellValue('D' . $rowCount, $v['url']);
$sheet->setCellValue('E' . $rowCount, $v['category_id_text']);
$sheet->setCellValue('F' . $rowCount, '发布中');
$sheet->setCellValue('G' . $rowCount, $v['images']);
$sheet->setCellValue('H' . $rowCount, $v['seo_mate']['title']);
$sheet->setCellValue('I' . $rowCount, $v['seo_mate']['keyword']);
$sheet->setCellValue('J' . $rowCount, $v['seo_mate']['description']);
// $sheet->setCellValue('B' . $rowCount, $v['intro']);
// $sheet->setCellValue('C' . $rowCount, $v['content']);
// $sheet->setCellValue('D' . $rowCount, $v['url']);
// $sheet->setCellValue('E' . $rowCount, $v['category_id_text']);
// $sheet->setCellValue('F' . $rowCount, '发布中');
// $sheet->setCellValue('G' . $rowCount, $v['images']);
// $sheet->setCellValue('H' . $rowCount, $v['seo_mate']['title']);
// $sheet->setCellValue('I' . $rowCount, $v['seo_mate']['keyword']);
// $sheet->setCellValue('J' . $rowCount, $v['seo_mate']['description']);
$rowCount++;
}
// 创建一个新的 Excel Writer 对象
... ...
<?php
/**
* @remark :
* @name :LyhImportTest.php
* @author :lyh
* @method :post
* @time :2025/2/24 14:52
*/
namespace App\Console\Commands\LyhTest;
use Illuminate\Console\Command;
class LyhImportTest extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'lyh_import_test';
/**
* The console command description.
*
* @var string
*/
protected $description = '导入数据';
/**
* @remark :统一更新路由
* @name :handle
* @author :lyh
* @method :post
* @time :2023/11/20 15:13
*/
public function handle(){
$data = [];
echo date('Y-m-d H:i:s') . 'end'.json_encode($data) . PHP_EOL;
}
/**
* @remark :导入扩展模块数据
* @name :importCustomModule
* @author :lyh
* @method :post
* @time :2025/2/24 14:54
*/
public function importCustomModule(){
}
}
... ...
... ... @@ -67,6 +67,16 @@ class UpdateRoute extends Command
echo date('Y-m-d H:i:s') . 'end'.json_encode($data) . PHP_EOL;
}
/**
* @remark :导入数据
* @name :importCustomModule
* @author :lyh
* @method :post
* @time :2025/2/24 14:44
*/
public function importCustomModule(){
}
public function ceshi($api_no = null)
{
... ...
... ... @@ -9,6 +9,7 @@ use App\Http\Requests\Bside\Ai\AiBlogRequest;
use App\Models\Ai\AiBlog;
use App\Models\Ai\AiBlogAuthor;
use App\Models\Ai\AiBlogList;
use App\Models\RouteMap\RouteMap;
use App\Services\AiBlogService;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
... ... @@ -59,10 +60,11 @@ class AiBlogController extends BaseController
* @time :2025/2/14 13:59
*/
public function getAiBlog(AiBlog $aiBlog){
$lists = $aiBlog->lists($this->map,$this->page,$this->row,'id',['id','new_title','image','task_id','status','created_at','updated_at']);
$lists = $aiBlog->lists($this->map,$this->page,$this->row,'id',['id','keyword','new_title','route','image','task_id','status','created_at','updated_at']);
if(!empty($lists) && !empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
$v['image'] = getImageUrl($v['image']);
$v['route'] = $this->user['test_domain'] . 'blog/' . $v['route'];
$lists['list'][$k] = $v;
}
}
... ... @@ -99,6 +101,13 @@ class AiBlogController extends BaseController
public function getAiBlogAuthor(AiBlogAuthor $aiBlogAuthor){
$field = ['id','route','author_id','title','image','created_at','updated_at'];
$lists = $aiBlogAuthor->lists($this->map,$this->page,$this->row,'id',$field);
if(!empty($lists) && !empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
$v['image'] = getImageUrl($v['image']);
$v['route'] = $this->user['test_domain'] . 'user/' . $v['route'];
$lists['list'][$k] = $v;
}
}
$this->response('success',Code::SUCCESS,$lists);
}
... ... @@ -143,7 +152,7 @@ class AiBlogController extends BaseController
public function delete(AiBlogLogic $aiBlogLogic)
{
$this->request->validate([
'ids'=>['required', new Ids()]
'ids'=>['required'],
],[
'ids.required' => 'ID不能为空'
]);
... ... @@ -160,6 +169,12 @@ class AiBlogController extends BaseController
*/
public function getAiBlogList(AiBlogList $aiBlogList){
$lists = $aiBlogList->lists($this->map,$this->page,$this->row,'id',['id','route','created_at','updated_at']);
if(!empty($lists) && !empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
$v['route'] = $this->user['test_domain'] . 'top-blog/' . $v['route'];
$lists['list'][$k] = $v;
}
}
$this->response('success',Code::SUCCESS,$lists);
}
... ...
... ... @@ -248,7 +248,7 @@ class ProjectLogic extends BaseLogic
public function createAuthor($project_id,$mch_id,$key){
//查看当前项目是否已经创建了作者
$aiBlogTaskModel = new AiBlogTask();
$count = $aiBlogTaskModel->count();
$count = $aiBlogTaskModel->counts(['project_id'=>$project_id]);
if($count > 0){
return true;
}
... ...
... ... @@ -55,7 +55,7 @@ class AiBlogLogic extends BaseLogic
$aiBlogService = new AiBlogService();
$aiBlogService->mch_id = $aiSettingInfo['mch_id'];
$aiBlogService->key = $aiSettingInfo['key'];
$aiBlogService->updateDetail(['title'=>$this->param['title'],'thumb'=>$this->param['image'],'route'=>$this->param['route'],'author_id'=>$this->param['author_id']]);
$aiBlogService->updateDetail(['title'=>$this->param['new_title'],'thumb'=>$this->param['image'],'route'=>$this->param['route'],'author_id'=>$this->param['author_id']]);
}catch (\Exception $e){
$this->fail('保存失败,请联系管理员');
}
... ... @@ -70,7 +70,7 @@ class AiBlogLogic extends BaseLogic
* @time :2025/2/21 14:46
*/
public function saveBlogAuthor(){
try {
// try {
$aiAuthorModel = new AiBlogAuthor();
if(!empty($this->param['image'])){
$this->param['image'] = str_replace_url($this->param['image']);
... ... @@ -79,9 +79,9 @@ class AiBlogLogic extends BaseLogic
$aiAuthorModel->edit($this->param,['id'=>$this->param['id']]);
$aiBlogService = new AiBlogService();
$aiBlogService->updateAuthorInfo(['author_id'=>$this->param['author_id'],'title'=>$this->param['title'],'picture'=>$this->param['image'],'description'=>$this->param['description']]);
}catch (\Exception $e){
$this->fail('保存失败,请联系管理员');
}
// }catch (\Exception $e){
// $this->fail('保存失败,请联系管理员');
// }
return $this->success();
}
... ... @@ -99,7 +99,7 @@ class AiBlogLogic extends BaseLogic
$aiBlogService = new AiBlogService();
$aiBlogService->mch_id = $aiSettingInfo['mch_id'];
$aiBlogService->key = $aiSettingInfo['key'];
$aiBlogService->route = generateRoute(Translate::tran($this->param['route'], 'en'));
$aiBlogService->route = generateRoute(Translate::tran($this->param['keyword'], 'en'));
$result = $aiBlogService->createTask($this->param['keyword'],$this->param['type']);
if($result['status'] == 200){
$aiBlogTaskModel = new AiBlogTask();
... ...
... ... @@ -24,18 +24,14 @@ class AiBlogRequest extends FormRequest
public function rules()
{
return [
'keywords'=>'required',
'new_title'=>'required',
'text'=>'required',
];
}
public function messages()
{
return [
'keywords.required' => '关键字不能为空',
'new_title.required' => '新标题不能为空',
'text.required' => '内容不能为空',
];
}
}
... ...
... ... @@ -35,6 +35,7 @@ class RouteMap extends Base
const SOURCE_MODULE = 'module';
const SOURCE_AI_BLOG = 'ai_blog';
const SOURCE_AI_BLOG_AUTHOR = 'ai_blog_author';//ai博客作者
const SOURCE_AI_BLOG_LIST = 'ai_blog_list';
//自定义模块分类
const SOURCE_MODULE_CATE = 'module_category';
... ...