正在显示
1 个修改的文件
包含
89 行增加
和
32 行删除
| @@ -9,8 +9,18 @@ | @@ -9,8 +9,18 @@ | ||
| 9 | 9 | ||
| 10 | namespace App\Console\Commands\Project; | 10 | namespace App\Console\Commands\Project; |
| 11 | 11 | ||
| 12 | +use App\Enums\Common\Code; | ||
| 13 | +use App\Helper\Common; | ||
| 12 | use App\Models\Domain\DomainInfo; | 14 | use App\Models\Domain\DomainInfo; |
| 15 | +use App\Models\Product\Category; | ||
| 16 | +use App\Models\Product\CategoryRelated; | ||
| 17 | +use App\Models\Product\Detail; | ||
| 18 | +use App\Models\Product\Product; | ||
| 13 | use App\Models\Project\Project; | 19 | use App\Models\Project\Project; |
| 20 | +use App\Models\RouteMap\RouteMap; | ||
| 21 | +use App\Models\Template\BTemplate; | ||
| 22 | +use App\Models\Template\Setting; | ||
| 23 | +use App\Models\User\User; | ||
| 14 | use App\Models\WebSetting\WebSettingSeo; | 24 | use App\Models\WebSetting\WebSettingSeo; |
| 15 | use App\Services\ProjectServer; | 25 | use App\Services\ProjectServer; |
| 16 | use Illuminate\Console\Command; | 26 | use Illuminate\Console\Command; |
| @@ -25,7 +35,7 @@ class DownloadProject extends Command | @@ -25,7 +35,7 @@ class DownloadProject extends Command | ||
| 25 | * | 35 | * |
| 26 | * @var string | 36 | * @var string |
| 27 | */ | 37 | */ |
| 28 | - protected $signature = 'downloads_project'; | 38 | + protected $signature = 'downloads_products'; |
| 29 | 39 | ||
| 30 | /** | 40 | /** |
| 31 | * The console command description. | 41 | * The console command description. |
| @@ -34,47 +44,94 @@ class DownloadProject extends Command | @@ -34,47 +44,94 @@ class DownloadProject extends Command | ||
| 34 | */ | 44 | */ |
| 35 | protected $description = '导出项目数据'; | 45 | protected $description = '导出项目数据'; |
| 36 | 46 | ||
| 37 | -// public function handle(){ | ||
| 38 | -// $projectModel = new Project(); | ||
| 39 | -// $data = $projectModel->formatQuery(['channel'=>['like','%"channel_id": "57"%'],'delete_status'=>0])->with(['deploy_optimize'])->get()->toArray(); | ||
| 40 | -// if(!empty($data)){ | ||
| 41 | -// $result = $this->exportData($data); | ||
| 42 | -// } | ||
| 43 | -// echo date('Y-m-d H:i:s') . ' ' . json_encode($result) . PHP_EOL; | ||
| 44 | -// return $result; | ||
| 45 | -// | ||
| 46 | -// } | ||
| 47 | - | ||
| 48 | public function handle(){ | 47 | public function handle(){ |
| 49 | - $data = []; | ||
| 50 | - $projectModel = new Project(); | ||
| 51 | - $projectList = $projectModel->formatQuery(['delete_status'=>0,'type'=>['in',[2,3]]])->with(['deploy_optimize'])->select(['id','status','type','title','remain_day'])->get()->toArray();; | ||
| 52 | - foreach ($projectList as $v){ | ||
| 53 | - ProjectServer::useProject($v['id']); | ||
| 54 | - $seoModel = new WebSettingSeo(); | ||
| 55 | - $seoInfo = $seoModel->read(['project_id'=>$v['id']]); | ||
| 56 | - if($seoInfo === false){ | ||
| 57 | - $data[] = $v; | ||
| 58 | - }else{ | ||
| 59 | - if(empty($seoInfo['single_page_suffix'])){ | ||
| 60 | - $data[] = $v; | 48 | + ProjectServer::useProject(1225); |
| 49 | + $data = $this->downloadProduct(); | ||
| 50 | + DB::disconnect('custom_mysql'); | ||
| 51 | + echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; | ||
| 52 | + return true; | ||
| 53 | +// return $this->exportData($data); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public function downloadProduct() | ||
| 57 | + { | ||
| 58 | + $product = new Product(); | ||
| 59 | + $filed = ['id', 'project_id', 'title' ,'thumb' , 'route' ,'intro','content', | ||
| 60 | + 'category_id', 'status']; | ||
| 61 | + $this->order = 'sort'; | ||
| 62 | + $lists = $product->list(['status'=>1],'id',$filed); | ||
| 63 | + if(!empty($lists)){ | ||
| 64 | + $cate_data = $this->getCategoryList();//分类 | ||
| 65 | + $detailModel = new Detail(); | ||
| 66 | + foreach ($lists as $k => $v){ | ||
| 67 | + $detailInfo = $detailModel->read(['product_id'=>$v['id'],'column_id'=>1,'text_type'=>1],['content']); | ||
| 68 | + if($detailInfo === false || ($detailInfo['content']['content'] == null)){ | ||
| 69 | + $v['content'] = ''; | ||
| 70 | + }else{ | ||
| 71 | + $v['content'] = $detailInfo['content']['content']; | ||
| 61 | } | 72 | } |
| 73 | + $v['url'] = 'https://www.autsikinta.com/' . getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id']); | ||
| 74 | + $v['category_id_text'] = $this->categoryName($v['id'],$cate_data); | ||
| 75 | + //ToDo::处理图片及文件 | ||
| 76 | + if(!empty($v['thumb']) && !empty($v['thumb']['url'])){ | ||
| 77 | + $v['images'] = getImageUrl($v['thumb']['url'],$this->user['storage_type'] ?? 0,$this->user['project_location']); | ||
| 78 | + }else{ | ||
| 79 | + $v['images'] = ''; | ||
| 80 | + } | ||
| 81 | + echo date('Y-m-d H:i:s') . '数据详情$v:'. $v . PHP_EOL; | ||
| 82 | + $lists[$k] = $v; | ||
| 62 | } | 83 | } |
| 63 | - DB::disconnect('custom_mysql'); | ||
| 64 | } | 84 | } |
| 65 | - return $this->exportData($data); | 85 | + return $lists; |
| 86 | + } | ||
| 87 | + public function categoryName($product_id,$data){ | ||
| 88 | + $cateRelatedModel = new CategoryRelated(); | ||
| 89 | + $category_id = $cateRelatedModel->where('product_id',$product_id)->pluck('cate_id')->toArray(); | ||
| 90 | + $category_name = ''; | ||
| 91 | + if(!empty($category_id) && !empty($data)){ | ||
| 92 | + foreach ($category_id as $v){ | ||
| 93 | + if(isset($data[$v])){ | ||
| 94 | + $category_name .= $data[$v].','; | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + $category_name = trim($category_name,','); | ||
| 98 | + } | ||
| 99 | + return $category_name; | ||
| 100 | + } | ||
| 101 | + /** | ||
| 102 | + * @remark :获取所有分类 | ||
| 103 | + * @name :getCategoryList | ||
| 104 | + * @author :lyh | ||
| 105 | + * @method :post | ||
| 106 | + * @time :2023/9/14 13:56 | ||
| 107 | + */ | ||
| 108 | + public function getCategoryList(){ | ||
| 109 | + $data = Common::get_user_cache('product_category',$this->user['project_id']); | ||
| 110 | + if(empty($data)){ | ||
| 111 | + $categoryModel = new Category(); | ||
| 112 | + $data = []; | ||
| 113 | + $cateList = $categoryModel->list(['project_id'=>$this->user['project_id']],['id','title']); | ||
| 114 | + if(!empty($cateList)){ | ||
| 115 | + foreach ($cateList as $value){ | ||
| 116 | + $data[$value['id']] = $value['title']; | ||
| 117 | + } | ||
| 118 | + } | ||
| 119 | + Common::set_user_cache($data,'product_category',$this->user['project_id']); | ||
| 120 | + } | ||
| 121 | + return $data; | ||
| 66 | } | 122 | } |
| 67 | - | ||
| 68 | public function exportData($data){ | 123 | public function exportData($data){ |
| 69 | // 创建一个新的 Excel 电子表格实例 | 124 | // 创建一个新的 Excel 电子表格实例 |
| 70 | $spreadsheet = new Spreadsheet(); | 125 | $spreadsheet = new Spreadsheet(); |
| 71 | $sheet = $spreadsheet->getActiveSheet(); | 126 | $sheet = $spreadsheet->getActiveSheet(); |
| 72 | // 添加表头 | 127 | // 添加表头 |
| 73 | - $sheet->setCellValue('A1', '项目ID'); | ||
| 74 | - $sheet->setCellValue('B1', '项目名称'); | ||
| 75 | - $sheet->setCellValue('C1', '域名'); | ||
| 76 | - $sheet->setCellValue('D1', '状态'); | ||
| 77 | - $sheet->setCellValue('E1', '剩余服务时间'); | 128 | + $sheet->setCellValue('A1', '产品名称'); |
| 129 | + $sheet->setCellValue('B1', '产品描述'); | ||
| 130 | + $sheet->setCellValue('C1', '产品内容'); | ||
| 131 | + $sheet->setCellValue('D1', '产品路由'); | ||
| 132 | + $sheet->setCellValue('E1', '产品分类'); | ||
| 133 | + $sheet->setCellValue('F1', '产品状态'); | ||
| 134 | + $sheet->setCellValue('G1', '产品主图'); | ||
| 78 | $rowCount = 2; | 135 | $rowCount = 2; |
| 79 | // $allData = $this->countAll(); | 136 | // $allData = $this->countAll(); |
| 80 | foreach ($data as $v) { | 137 | foreach ($data as $v) { |
-
请 注册 或 登录 后发表评论