作者 lyh

变更数据

@@ -32,35 +32,35 @@ class SyncImage extends Command @@ -32,35 +32,35 @@ class SyncImage extends Command
32 protected $description = '同步图片与文件'; 32 protected $description = '同步图片与文件';
33 33
34 34
35 -// public function handle(){  
36 -// $str = $this->getProjectConfig(1808);  
37 -// $imageModel = new Image();  
38 -// $str_image = '/upload/p/1808/image_product/2024-09/ppp.png,/upload/p/1808/image_product/2024-09/86e4866b-7432-40c1-8c06-d335cd736e29.png,/upload/p/1808/image_product/2024-09/7fd109cc-56f4-457c-a9c4-c3fa8d8195b2.png,/upload/p/1808/image_product/2024-09/1.png,/upload/p/1808/image_product/2024-08/bxb12501-3-1.png,/upload/p/1808/image_product/2024-08/bxa10801-3-1.png,/upload/p/1808/image_product/2024-08/bxa007-3-1.png,/upload/p/1808/image_product/2024-08/auto-parts-rectifier-bxf1070-for-alternator-1-1.png,/upload/p/1808/image_product/2024-08/auto-parts-rectifier-bxd1102-for-alternator-2-1.png,/upload/p/1808/image_product/2024-08/11407-3-1.png,/upload/p/1808/image_product/2024-07/gfjty.jpg,/upload/p/1808/image_product/2024-07/bxn11508-g1-2.png,/upload/p/1808/image_product/2024-07/bxn11508-g1-1.png,/upload/p/1808/image_product/2024-07/bxb12501-2.png,/upload/p/1808/image_product/2024-07/bxb12501-1.png,/upload/p/1808/image_product/2024-07/bxb1209-2.png,/upload/p/1808/image_product/2024-07/bxb1209-1.png,/upload/p/1808/image_product/2024-07/bxa10801-2.png,/upload/p/1808/image_product/2024-07/bxa10801-1.png,/upload/p/1808/image_product/2024-07/bxa007-2.png,/upload/p/1808/image_product/2024-07/bxa007-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf6102-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf1070-for-alternator-3.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf1070-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd9410-for-alternator-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd1102-for-alternator-3.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd1102-for-alternator-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxb12807-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxb12807-for-alternator-1.png,/upload/p/1808/image_product/2024-07/11407-2.png,/upload/p/1808/image_product/2024-07/11407-1.png';  
39 -// $lists = explode(',',$str_image);  
40 -// $domain = 'http://globalso-v6-1309677403.cos.ap-hongkong.myqcloud.com';//cos域名  
41 -// foreach ($lists as $v){  
42 -// $url = $domain . $v.'?'.$str;  
43 -// echo date('Y-m-d H:i:s') . '水印路径:'. $url . PHP_EOL;  
44 -// $cdu_url = $this->coverOriginalImage($url,$v);  
45 -// echo date('Y-m-d H:i:s') . '返回的url:'. $cdu_url . PHP_EOL;  
46 -// }  
47 -// return true;  
48 -// }  
49 -  
50 public function handle(){ 35 public function handle(){
51 - $data = [];  
52 - $domain = 'https://ecdn6.globalso.com/'; 36 + $str = $this->getProjectConfig(1808);
53 $imageModel = new Image(); 37 $imageModel = new Image();
54 - $lists = $imageModel->list(['project_id'=>1808]);  
55 - foreach ($lists as $k => $v){  
56 - $url = $domain . $v['path'];  
57 - echo date('Y-m-d H:i:s') . '刷新路径:'. $url .',主键id:'. $v['id'] . PHP_EOL;  
58 - $data[] = $url; 38 + $str_image = '/upload/p/1808/image_product/2024-09/ppp.png,/upload/p/1808/image_product/2024-09/86e4866b-7432-40c1-8c06-d335cd736e29.png,/upload/p/1808/image_product/2024-09/7fd109cc-56f4-457c-a9c4-c3fa8d8195b2.png,/upload/p/1808/image_product/2024-09/1.png,/upload/p/1808/image_product/2024-08/bxb12501-3-1.png,/upload/p/1808/image_product/2024-08/bxa10801-3-1.png,/upload/p/1808/image_product/2024-08/bxa007-3-1.png,/upload/p/1808/image_product/2024-08/auto-parts-rectifier-bxf1070-for-alternator-1-1.png,/upload/p/1808/image_product/2024-08/auto-parts-rectifier-bxd1102-for-alternator-2-1.png,/upload/p/1808/image_product/2024-08/11407-3-1.png,/upload/p/1808/image_product/2024-07/gfjty.jpg,/upload/p/1808/image_product/2024-07/bxn11508-g1-2.png,/upload/p/1808/image_product/2024-07/bxn11508-g1-1.png,/upload/p/1808/image_product/2024-07/bxb12501-2.png,/upload/p/1808/image_product/2024-07/bxb12501-1.png,/upload/p/1808/image_product/2024-07/bxb1209-2.png,/upload/p/1808/image_product/2024-07/bxb1209-1.png,/upload/p/1808/image_product/2024-07/bxa10801-2.png,/upload/p/1808/image_product/2024-07/bxa10801-1.png,/upload/p/1808/image_product/2024-07/bxa007-2.png,/upload/p/1808/image_product/2024-07/bxa007-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf6102-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf1070-for-alternator-3.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxf1070-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd9410-for-alternator-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd1102-for-alternator-3.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxd1102-for-alternator-1.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxb12807-for-alternator-2.png,/upload/p/1808/image_product/2024-07/auto-parts-rectifier-bxb12807-for-alternator-1.png,/upload/p/1808/image_product/2024-07/11407-2.png,/upload/p/1808/image_product/2024-07/11407-1.png';
  39 + $lists = explode(',',$str_image);
  40 + $domain = 'http://globalso-v6-1309677403.cos.ap-hongkong.myqcloud.com';//cos域名
  41 + foreach ($lists as $v){
  42 + $url = $domain . $v.'?'.$str;
  43 + echo date('Y-m-d H:i:s') . '水印路径:'. $url . PHP_EOL;
  44 + $cdu_url = $this->coverOriginalImage($url,$v);
  45 + echo date('Y-m-d H:i:s') . '返回的url:'. $cdu_url . PHP_EOL;
59 } 46 }
60 - $yunService = new UpyunService();  
61 - return $yunService->preheatPush($data); 47 + return true;
62 } 48 }
63 49
  50 +// public function handle(){
  51 +// $data = [];
  52 +// $domain = 'https://ecdn6.globalso.com/';
  53 +// $imageModel = new Image();
  54 +// $lists = $imageModel->list(['project_id'=>1808]);
  55 +// foreach ($lists as $k => $v){
  56 +// $url = $domain . $v['path'];
  57 +// echo date('Y-m-d H:i:s') . '刷新路径:'. $url .',主键id:'. $v['id'] . PHP_EOL;
  58 +// $data[] = $url;
  59 +// }
  60 +// $yunService = new UpyunService();
  61 +// return $yunService->preheatPush($data);
  62 +// }
  63 +
64 /** 64 /**
65 * @remark :添加水印后保存图片(覆盖/非覆盖的文件未存入数据库) 65 * @remark :添加水印后保存图片(覆盖/非覆盖的文件未存入数据库)
66 * @name :uploadImages 66 * @name :uploadImages
@@ -15,6 +15,7 @@ use App\Models\Blog\BlogCategory; @@ -15,6 +15,7 @@ use App\Models\Blog\BlogCategory;
15 use App\Models\News\NewsCategory; 15 use App\Models\News\NewsCategory;
16 use App\Models\Product\Category; 16 use App\Models\Product\Category;
17 use App\Models\Product\Keyword; 17 use App\Models\Product\Keyword;
  18 +use App\Models\RouteMap\RouteMap;
18 use App\Models\Ticket\TicketUploadData; 19 use App\Models\Ticket\TicketUploadData;
19 use App\Services\ProjectServer; 20 use App\Services\ProjectServer;
20 use Illuminate\Http\Request; 21 use Illuminate\Http\Request;
@@ -216,10 +217,21 @@ class TicketUploadDataController extends BaseController @@ -216,10 +217,21 @@ class TicketUploadDataController extends BaseController
216 if ($this->param['type'] == 1) { 217 if ($this->param['type'] == 1) {
217 //todo::搜索获取分类 218 //todo::搜索获取分类
218 $productCateModel = new Category(); 219 $productCateModel = new Category();
219 - if(!isset($this->param['search']) || empty($this->param['search'])){  
220 - $data = $productCateModel->lists(['status'=>1], 1, 20,'id',['id','title as name']);  
221 - }else{  
222 - $data = $productCateModel->lists(['status'=>1,'title' => ['like','%' . $this->param['search'] . '%']], 1, 20,'id',['id','title as name']); 220 + if(!empty($this->param['search']) && isset($this->param['search'])){
  221 + $this->map['name'] = ['like' , '%' . $this->param['search'] . '%'];
  222 + unset($this->param['search']);
  223 + }
  224 + $cate_list = $productCateModel->list($this->map, 'sort',['id','title']);
  225 + if ($cate_list === false) {
  226 + $this->response('无分类');
  227 + }
  228 + $data = [];
  229 + foreach ($cate_list as $v) {
  230 + $v = (array)$v;
  231 + if ($v['pid'] == 0) {
  232 + $v['sub'] = _get_child($v['id'], $cate_list);
  233 + $data[] = $v;
  234 + }
223 } 235 }
224 } else { 236 } else {
225 $keywordModel = new Keyword(); 237 $keywordModel = new Keyword();
@@ -249,15 +261,26 @@ class TicketUploadDataController extends BaseController @@ -249,15 +261,26 @@ class TicketUploadDataController extends BaseController
249 'project_id.required' => 'project_id不能为空', 261 'project_id.required' => 'project_id不能为空',
250 'search.required' => '搜索参数不能为空', 262 'search.required' => '搜索参数不能为空',
251 ]); 263 ]);
252 - ProjectServer::useProject($this->param['project_id']);  
253 - $blogCateModel = new BlogCategory();  
254 - if(!isset($this->param['search']) || empty($this->param['search'])){  
255 - $data = $blogCateModel->lists([], 1, 20,'id',['id','name']);  
256 - }else{  
257 - $data = $blogCateModel->lists(['name' => ['like' , '%' . $this->param['search'] . '%']], 1, 20,'id',['id','name']); 264 + ProjectServer::useProject($this->map['project_id']);
  265 + $newsCateModel = new NewsCategory();
  266 + if(!empty($this->param['search']) && isset($this->param['search'])){
  267 + $this->map['name'] = ['like' , '%' . $this->param['search'] . '%'];
  268 + unset($this->param['search']);
  269 + }
  270 + $cate_list = $newsCateModel->list($this->map, 'sort',['id','name as title']);
  271 + if ($cate_list === false) {
  272 + $this->response('error', Code::USER_ERROR);
  273 + }
  274 + $list = [];
  275 + foreach ($cate_list as $v) {
  276 + $v = (array)$v;
  277 + if ($v['pid'] == 0) {
  278 + $v['sub'] = _get_child($v['id'], $cate_list);
  279 + $list[] = $v;
  280 + }
258 } 281 }
259 DB::disconnect('custom_mysql'); 282 DB::disconnect('custom_mysql');
260 - $this->response('success', Code::SUCCESS, $data); 283 + $this->response('success', Code::SUCCESS, $list);
261 } 284 }
262 285
263 /** 286 /**
@@ -278,12 +301,137 @@ class TicketUploadDataController extends BaseController @@ -278,12 +301,137 @@ class TicketUploadDataController extends BaseController
278 ]); 301 ]);
279 ProjectServer::useProject($this->param['project_id']); 302 ProjectServer::useProject($this->param['project_id']);
280 $newsCateModel = new NewsCategory(); 303 $newsCateModel = new NewsCategory();
281 - if(!isset($this->param['search']) || empty($this->param['search'])){  
282 - $data = $newsCateModel->lists([], 1, 20,'id',['id','name']); 304 + if(!empty($this->param['search']) && isset($this->param['search'])){
  305 + $this->map['name'] = ['like' , '%' . $this->param['search'] . '%'];
  306 + unset($this->param['search']);
  307 + }
  308 + $cate_list = $newsCateModel->list($this->map, 'sort',['id','name as title']);
  309 + if ($cate_list === false) {
  310 + $this->response('error', Code::USER_ERROR);
  311 + }
  312 + $list = [];
  313 + foreach ($cate_list as $v) {
  314 + $v = (array)$v;
  315 + if ($v['pid'] == 0) {
  316 + $v['sub'] = _get_child($v['id'], $cate_list);
  317 + $list[] = $v;
  318 + }
  319 + }
  320 + $this->response('success', Code::SUCCESS, $list);
  321 + }
  322 +
  323 + /**
  324 + * @remark :保存关键字
  325 + * @name :saveKeyword
  326 + * @author :lyh
  327 + * @method :post
  328 + * @time :2025/10/10 10:50
  329 + */
  330 + public function saveKeyword()
  331 + {
  332 + $this->request->validate([
  333 + 'project_id' => 'required',
  334 + 'title' => 'required'
  335 + ], [
  336 + 'project_id.required' => 'project_id不能为空',
  337 + 'title.required' => '分类标题不能为空',
  338 + ]);
  339 + ProjectServer::useProject($this->param['project_id']);
  340 + $keywordModel = new Keyword();
  341 + $id = $keywordModel->addReturnId(['project_id' => $this->param['project_id'], 'title' => $this->param['title']]);
  342 + $route = RouteMap::setRoute($this->param['title'],RouteMap::SOURCE_PRODUCT_KEYWORD,$id,$this->param['project_id']);
  343 + $keywordModel->edit(['route'=>$route],['id'=>$id]);
  344 + DB::disconnect('custom_mysql');
  345 + $this->response('success', Code::SUCCESS, ['id'=>$id,'title'=>$this->param['title']]);
  346 + }
  347 +
  348 + /**
  349 + * @remark :新增分类
  350 + * @name :saveCategory
  351 + * @author :lyh
  352 + * @method :post
  353 + * @time :2025/10/10 10:13
  354 + */
  355 + public function saveCategory()
  356 + {
  357 + $this->request->validate([
  358 + 'project_id' => 'required',
  359 + 'type' => 'required',
  360 + 'title' => 'required'
  361 + ], [
  362 + 'project_id.required' => 'project_id不能为空',
  363 + 'type.required' => '类型不能为空',
  364 + 'title.required' => '分类标题不能为空',
  365 + ]);
  366 + ProjectServer::useProject($this->param['project_id']);
  367 + if($this->param['type'] == 1){//增加产品分类
  368 + $data = $this->addProductCategory($this->param['title'],$this->param['project_id']);
  369 + }elseif ($this->param['type'] == 2){//增加blog分类
  370 + $data = $this->addBlogCategory($this->param['title'],$this->param['project_id']);
283 }else{ 371 }else{
284 - $data = $newsCateModel->lists(['name' => ['like' , '%' . $this->param['search'] . '%']], 1, 20,'id',['id','name']); 372 + $data = $this->addNewsCategory($this->param['title'],$this->param['project_id']);
285 } 373 }
286 DB::disconnect('custom_mysql'); 374 DB::disconnect('custom_mysql');
287 - $this->response('success', Code::SUCCESS, $data); 375 + $this->response('success',Code::SUCCESS, $data);
  376 + }
  377 +
  378 + /**
  379 + * @remark :新增分类
  380 + * @name :addProductCategory
  381 + * @author :lyh
  382 + * @method :post
  383 + * @time :2025/10/10 10:43
  384 + */
  385 + public function addProductCategory($title,$project_id){
  386 + $productCateModel = new Category();
  387 + $info = $productCateModel->read(['title'=>$title],['id','title']);
  388 + if($info !== false){
  389 + return $info;
  390 + }else{
  391 + $id = $productCateModel->addReturnId(['title'=>$title,'project_id'=>$project_id]);
  392 + $route = RouteMap::setRoute($title,RouteMap::SOURCE_PRODUCT_CATE,$id,$project_id);
  393 + $productCateModel->edit(['route'=>$route],['id'=>$id]);
  394 + return ['id'=>$id,'title'=>$title];
  395 + }
  396 + }
  397 +
  398 + /**
  399 + * @remark :新增blog分类
  400 + * @name :addBlogCategory
  401 + * @author :lyh
  402 + * @method :post
  403 + * @time :2025/10/10 10:44
  404 + */
  405 + public function addBlogCategory($title,$project_id){
  406 + $blogCateModel = new BlogCategory();
  407 + $info = $blogCateModel->read(['name'=>$title],['id','name as title']);
  408 + if($info !== false){
  409 + return $info;
  410 + }else{
  411 + $id = $blogCateModel->addReturnId(['name'=>$title,'project_id'=>$project_id]);
  412 + $route = RouteMap::setRoute($title,RouteMap::SOURCE_BLOG_CATE,$id,$project_id);
  413 + $blogCateModel->edit(['alias'=>$route],['id'=>$id]);
  414 + return ['id'=>$id,'title'=>$title];
  415 + }
  416 + }
  417 +
  418 + /**
  419 + * @remark :新增news分类
  420 + * @name :addNewsCategory
  421 + * @author :lyh
  422 + * @method :post
  423 + * @time :2025/10/10 10:46
  424 + */
  425 + public function addNewsCategory($title,$project_id){
  426 + $newsCateModel = new NewsCategory();//增加新闻分类
  427 + $info = $newsCateModel->read(['name'=>$title],['id','name as title']);
  428 + if($info !== false){
  429 + return $info;
  430 + }else{
  431 + $id = $newsCateModel->addReturnId(['name'=>$title,'project_id'=>$project_id]);
  432 + $route = RouteMap::setRoute($title,RouteMap::SOURCE_NEWS_CATE,$id,$project_id);
  433 + $newsCateModel->edit(['alias'=>$route],['id'=>$id]);
  434 + return ['id'=>$id,'title'=>$title];
  435 + }
288 } 436 }
289 } 437 }
@@ -102,5 +102,7 @@ Route::prefix('ticket_upload')->group(function () { @@ -102,5 +102,7 @@ Route::prefix('ticket_upload')->group(function () {
102 Route::any('/getProductCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getProductCate'])->name('ticket_upload.getProductCate'); 102 Route::any('/getProductCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getProductCate'])->name('ticket_upload.getProductCate');
103 Route::any('/getBlogCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getBlogCate'])->name('ticket_upload.getBlogCate'); 103 Route::any('/getBlogCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getBlogCate'])->name('ticket_upload.getBlogCate');
104 Route::any('/getNewsCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getNewsCate'])->name('ticket_upload.getNewsCate'); 104 Route::any('/getNewsCate', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'getNewsCate'])->name('ticket_upload.getNewsCate');
  105 + Route::any('/saveCategory', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'saveCategory'])->name('ticket_upload.saveCategory');
  106 + Route::any('/saveKeyword', [\App\Http\Controllers\Api\WorkOrder\TicketUploadDataController::class, 'saveKeyword'])->name('ticket_upload.saveKeyword');
105 }); 107 });
106 108