李帅

1.临境新增字段。

...@@ -47,6 +47,7 @@ class AdminMakeVideoController extends AdminController ...@@ -47,6 +47,7 @@ class AdminMakeVideoController extends AdminController
47 $grid->column('feel','有感'); 47 $grid->column('feel','有感');
48 $grid->column('weather','天气'); 48 $grid->column('weather','天气');
49 $grid->column('huangli','黄历'); 49 $grid->column('huangli','黄历');
50 + $grid->column('location','此地');
50 $grid->column('poem_id'); 51 $grid->column('poem_id');
51 $grid->column('temp_id'); 52 $grid->column('temp_id');
52 $grid->column('thumbnail'); 53 $grid->column('thumbnail');
...@@ -136,7 +137,9 @@ class AdminMakeVideoController extends AdminController ...@@ -136,7 +137,9 @@ class AdminMakeVideoController extends AdminController
136 ->when(2,function (Form $form){ 137 ->when(2,function (Form $form){
137 $form->html(''); 138 $form->html('');
138 }) 139 })
139 - ->default(1); 140 + ->default(2);
141 +
142 + $form->text('location','此地')->placeholder('暂时先手动输入此地');
140 143
141 $form->display('created_at'); 144 $form->display('created_at');
142 $form->display('updated_at'); 145 $form->display('updated_at');
......
...@@ -35,6 +35,9 @@ class ImmerseController extends AdminController ...@@ -35,6 +35,9 @@ class ImmerseController extends AdminController
35 35
36 $grid->column('id')->sortable(); 36 $grid->column('id')->sortable();
37 $grid->column('content','有感'); 37 $grid->column('content','有感');
38 + $grid->column('weather','天气');
39 + $grid->column('huangli','黄历');
40 + $grid->column('location','此地');
38 $grid->column('url')->display(function ($url){ 41 $grid->column('url')->display(function ($url){
39 return "<a target='_blank' href='". $url ."'>查看</a>"; 42 return "<a target='_blank' href='". $url ."'>查看</a>";
40 }); 43 });
......
1 <?php 1 <?php
2 2
3 use Dcat\Admin\Admin; 3 use Dcat\Admin\Admin;
4 +use Dcat\Admin\Form\Field\Map;
4 use Dcat\Admin\Grid; 5 use Dcat\Admin\Grid;
5 use Dcat\Admin\Form; 6 use Dcat\Admin\Form;
6 use Dcat\Admin\Grid\Filter; 7 use Dcat\Admin\Grid\Filter;
...@@ -29,4 +30,6 @@ use App\Admin\Extensions\Gallery; ...@@ -29,4 +30,6 @@ use App\Admin\Extensions\Gallery;
29 Admin::asset()->alias('@js', '/asset/js'); 30 Admin::asset()->alias('@js', '/asset/js');
30 Admin::asset()->alias('@css', '/asset/css'); 31 Admin::asset()->alias('@css', '/asset/css');
31 32
32 -Column::extend('gallery', Gallery::class); //grid列扩展 - 多图浏览
...\ No newline at end of file ...\ No newline at end of file
33 +Column::extend('gallery', Gallery::class); //grid列扩展 - 多图浏览
34 +
35 +Map::requireAssets(); // 引入地图资源
......
...@@ -39,7 +39,10 @@ class ImmerseController extends Controller ...@@ -39,7 +39,10 @@ class ImmerseController extends Controller
39 'type' => 'required', 39 'type' => 'required',
40 'content' => 'sometimes', 40 'content' => 'sometimes',
41 'weather' => 'sometimes', 41 'weather' => 'sometimes',
42 - 'thumbnail' => 'sometimes', 42 + 'haungli' => 'sometimes',
43 + 'longitude' => 'sometimes',
44 + 'latitude' => 'sometimes',
45 + 'location' => 'sometimes',
43 ]); 46 ]);
44 47
45 if ($validator->fails()){ 48 if ($validator->fails()){
...@@ -51,65 +54,32 @@ class ImmerseController extends Controller ...@@ -51,65 +54,32 @@ class ImmerseController extends Controller
51 $user_id = $request->user()->id; 54 $user_id = $request->user()->id;
52 55
53 $immerse = Immerse::query()->find($request->item_id); 56 $immerse = Immerse::query()->find($request->item_id);
54 -// if ($validated['type'] == 1){ 57 +
55 -// $create = Immerse::query()->create([ 58 + $create = Immerse::query()->create([
56 -// 'user_id' => $user_id, 59 + 'user_id' => $user_id,
57 -// 'title' => '', 60 + 'title' => '',
58 -// 'content' => $validated['content'], 61 + 'content' => $validated['content'],
59 -// 'url' => '', 62 + 'weather' => $validated['weather'],
60 -// 'type' => $validated['type'], 63 + 'haungli' => $validated['haungli'],
61 -// 'duration' => 0, 64 + 'longitude' => $validated['longitude'],
62 -// 'size' => 0, 65 + 'latitude' => $validated['latitude'],
63 -// 'poem_id' => $immerse->poem_id, 66 + 'location' => $validated['location'],
64 -// 'temp_id' => $immerse->temp_id, 67 + 'url' => '',
65 -// 'thumbnail' => $immerse->thumbnail, 68 + 'type' => $validated['type'],
66 -// 'bgm' => $validated['item_url'], 69 + 'upload_file' => $validated['item_url'],
67 -// 'state' => 0 70 + 'duration' => 0,
68 -// ]); 71 + 'size' => 0,
69 -// 72 + 'origin_video_url' => $immerse->origin_video_url,
70 -// // 添加至队列 73 + 'origin_image_url' => $immerse->origin_image_url,
71 -// MakeImages::dispatch($create); 74 + 'poem_id' => $immerse->poem_id,
72 -// }else{ 75 + 'temp_id' => $immerse->temp_id,
73 -// // 视频 76 + 'thumbnail' => '',
74 -// $create = Immerse::query()->create([ 77 + 'bgm' => $immerse->bgm,
75 -// 'user_id' => $user_id, 78 + 'state' => 0
76 -// 'title' => '', 79 + ]);
77 -// 'content' => $validated['content'], 80 +
78 -// 'url' => '', 81 + // 添加至队列
79 -// 'type' => $validated['type'], 82 + UserMakeImmerse::dispatch($create);
80 -// 'duration' => 0,
81 -// 'size' => 0,
82 -// 'poem_id' => $immerse->poem_id,
83 -// 'temp_id' => $immerse->temp_id,
84 -// 'thumbnail' => '',
85 -// 'bgm' => $immerse->bgm,
86 -// 'state' => 0
87 -// ]);
88 -//
89 -// // 添加至队列
90 -// MakeVideo::dispatch($create, $validated['item_url']);
91 -// }
92 -
93 - $create = Immerse::query()->create([
94 - 'user_id' => $user_id,
95 - 'title' => '',
96 - 'content' => $validated['content'],
97 - 'url' => '',
98 - 'type' => $validated['type'],
99 - 'upload_file' => $validated['item_url'],
100 - 'duration' => 0,
101 - 'size' => 0,
102 - 'origin_video_url' => $immerse->origin_video_url,
103 - 'origin_image_url' => $immerse->origin_image_url,
104 - 'poem_id' => $immerse->poem_id,
105 - 'temp_id' => $immerse->temp_id,
106 - 'thumbnail' => '',
107 - 'bgm' => $immerse->bgm,
108 - 'state' => 0
109 - ]);
110 -
111 - // 添加至队列
112 - UserMakeImmerse::dispatch($create);
113 83
114 return Response::success($create); 84 return Response::success($create);
115 } 85 }
......
...@@ -486,13 +486,20 @@ class UserMakeImmerse implements ShouldQueue ...@@ -486,13 +486,20 @@ class UserMakeImmerse implements ShouldQueue
486 } 486 }
487 487
488 488
489 - public function getTextContentString($font) 489 + public function getTextContentString()
490 { 490 {
491 $components = $this->immerse->temp()->first()->components()->get(); 491 $components = $this->immerse->temp()->first()->components()->get();
492 492
493 $drawtext = ''; 493 $drawtext = '';
494 494
495 foreach ($components as $component) { 495 foreach ($components as $component) {
496 + $text_color = $component->text_color ?? 'white';
497 + $text_bg_color = $component->text_bg_color ?? '0xd0cdcc';
498 + $opacity = $component->opacity ? $component->opacity / 100 : 0.5;
499 + $font_file = Storage::disk('public')->path($component->font_file ?? 'ffmpeg/arialuni.ttf');
500 + $text_bg_box = $component->text_bg_box ?? 0;
501 + $fix_bounds = $component->fix_bounds == 1;
502 +
496 switch ($component->name){ 503 switch ($component->name){
497 case 'every_poem': 504 case 'every_poem':
498 case 'one_poem': 505 case 'one_poem':
...@@ -505,63 +512,54 @@ class UserMakeImmerse implements ShouldQueue ...@@ -505,63 +512,54 @@ class UserMakeImmerse implements ShouldQueue
505 $opacity = $component->opacity ? $component->opacity / 100 : '0.5'; 512 $opacity = $component->opacity ? $component->opacity / 100 : '0.5';
506 513
507 $drawtext .= 'drawtext="'. 514 $drawtext .= 'drawtext="'.
508 - 'fontfile=' . escapeshellarg($font) . ':' . 515 + 'fontfile=' . escapeshellarg($font_file) . ':' .
509 'textfile=' . escapeshellarg($text_file) . ':' . 516 'textfile=' . escapeshellarg($text_file) . ':' .
510 'fontsize=' . $this->calcFontSize($component->font_size) . ':' . 517 'fontsize=' . $this->calcFontSize($component->font_size) . ':' .
511 - 'fontcolor=' . $text_color . '@1.0:' . 518 + 'fontcolor=' . $text_color . '@' . $opacity . ':' .
512 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' . 519 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' .
513 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' . 520 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' .
514 - 'box=1:boxborderw='. $this->calcBorderSize($component->font_size) . ':' . 521 + 'fix_bounds='. $fix_bounds . ':' .
522 + 'box=1:boxborderw='. $text_bg_box . ':' .
515 'boxcolor=' . $text_bg_color . '@' . $opacity . '", '; 523 'boxcolor=' . $text_bg_color . '@' . $opacity . '", ';
516 -
517 break; 524 break;
518 case 'weather': 525 case 'weather':
519 $content = '多云'; 526 $content = '多云';
520 - $text_color = $component->text_color ?? 'white';
521 - $text_bg_color = $component->text_bg_color ?? '0xd0cdcc';
522 - $opacity = $component->opacity ? $component->opacity / 100 : '0.5';
523 -
524 $drawtext .= 'drawtext="'. 527 $drawtext .= 'drawtext="'.
525 - 'fontfile=' . escapeshellarg($font) . ':' . 528 + 'fontfile=' . escapeshellarg($font_file) . ':' .
526 'text=' . escapeshellarg($content) . ':' . 529 'text=' . escapeshellarg($content) . ':' .
527 'fontsize=' . $this->calcFontSize($component->font_size) . ':' . 530 'fontsize=' . $this->calcFontSize($component->font_size) . ':' .
528 - 'fontcolor=' . $text_color . '@1.0:' . 531 + 'fontcolor=' . $text_color . '@' . $opacity . ':' .
529 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' . 532 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' .
530 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' . 533 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' .
531 - 'box=1:boxborderw='. $this->calcBorderSize($component->font_size) . ':' . 534 + 'fix_bounds='. $fix_bounds . ':' .
535 + 'box=1:boxborderw='. $text_bg_box . ':' .
532 'boxcolor=' . $text_bg_color . '@' . $opacity . '", '; 536 'boxcolor=' . $text_bg_color . '@' . $opacity . '", ';
533 537
534 break; 538 break;
535 case 'date': 539 case 'date':
536 $content = Carbon::now()->format('Y年m月d日H时'); 540 $content = Carbon::now()->format('Y年m月d日H时');
537 - $text_color = $component->text_color ?? 'white';
538 - $text_bg_color = $component->text_bg_color ?? '0xd0cdcc';
539 - $opacity = $component->opacity ? $component->opacity / 100 : '0.5';
540 -
541 $drawtext .= 'drawtext="'. 541 $drawtext .= 'drawtext="'.
542 - 'fontfile=' . escapeshellarg($font) . ':' . 542 + 'fontfile=' . escapeshellarg($font_file) . ':' .
543 'text=' . escapeshellarg($content) . ':' . 543 'text=' . escapeshellarg($content) . ':' .
544 'fontsize=' . $this->calcFontSize($component->font_size) . ':' . 544 'fontsize=' . $this->calcFontSize($component->font_size) . ':' .
545 - 'fontcolor=' . $text_color . '@1.0:' . 545 + 'fontcolor=' . $text_color . '@' . $opacity . ':' .
546 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' . 546 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' .
547 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' . 547 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' .
548 - 'box=1:boxborderw='. $this->calcBorderSize($component->font_size) . ':' . 548 + 'fix_bounds='. $fix_bounds . ':' .
549 + 'box=1:boxborderw='. $text_bg_box . ':' .
549 'boxcolor=' . $text_bg_color . '@' . $opacity . '", '; 550 'boxcolor=' . $text_bg_color . '@' . $opacity . '", ';
550 break; 551 break;
551 case 'feel': 552 case 'feel':
552 - $content = $this->immerse->content ?: '这里是发表临境有感'; 553 + $content = $this->immerse->content ?: '读此一言,仿佛身临其境。';
553 - $text_color = $component->text_color ?? 'white';
554 - $text_bg_color = $component->text_bg_color ?? '0xd0cdcc';
555 - $opacity = $component->opacity ? $component->opacity / 100 : '0.5';
556 -
557 $drawtext .= 'drawtext="'. 554 $drawtext .= 'drawtext="'.
558 - 'fontfile=' . escapeshellarg($font) . ':' . 555 + 'fontfile=' . escapeshellarg($font_file) . ':' .
559 'text=' . escapeshellarg($content) . ':' . 556 'text=' . escapeshellarg($content) . ':' .
560 'fontsize=' . $this->calcFontSize($component->font_size) . ':' . 557 'fontsize=' . $this->calcFontSize($component->font_size) . ':' .
561 - 'fontcolor=' . $text_color . '@1.0:' . 558 + 'fontcolor=' . $text_color . '@' . $opacity . ':' .
562 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' . 559 'x=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][0]) . ':' .
563 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' . 560 'y=' . escapeshellarg(VideoTemp::POSITION_FFMPEG[$component->position][1]) . ':' .
564 - 'box=1:boxborderw='. $this->calcBorderSize($component->font_size) . ':' . 561 + 'fix_bounds='. $fix_bounds . ':' .
562 + 'box=1:boxborderw='. $text_bg_box . ':' .
565 'boxcolor=' . $text_bg_color . '@' . $opacity . '", '; 563 'boxcolor=' . $text_bg_color . '@' . $opacity . '", ';
566 break; 564 break;
567 } 565 }
...@@ -579,14 +577,4 @@ class UserMakeImmerse implements ShouldQueue ...@@ -579,14 +577,4 @@ class UserMakeImmerse implements ShouldQueue
579 { 577 {
580 return ceil($this->output_width / 360 * $width); 578 return ceil($this->output_width / 360 * $width);
581 } 579 }
582 -
583 - /**
584 - * @param $width
585 - * @param $content
586 - * @return float
587 - */
588 - public function calcBorderSize($width)
589 - {
590 - return ceil($width / 12 * 10);
591 - }
592 } 580 }
......
...@@ -364,4 +364,17 @@ return [ ...@@ -364,4 +364,17 @@ return [
364 // the extension files will be generated in this directory. 364 // the extension files will be generated in this directory.
365 'dir' => base_path('dcat-admin-extensions'), 365 'dir' => base_path('dcat-admin-extensions'),
366 ], 366 ],
367 +
368 + 'map' => [
369 + 'provider' => env('MAP_PROVIDER'),
370 +
371 + 'keys' => [
372 + 'tencent' => env('TENCENT_MAP_API_KEY'),
373 + 'google' => env('GOOGLE_API_KEY'),
374 + 'baidu' => env('BAIDU_MAP_API_KEY'),
375 + 'amap' => env('AMAP_API_KEY'), //高德地图密钥
376 + ],
377 + ],
378 +
379 +
367 ]; 380 ];
......
1 +<?php
2 +
3 +use Illuminate\Database\Migrations\Migration;
4 +use Illuminate\Database\Schema\Blueprint;
5 +use Illuminate\Support\Facades\Schema;
6 +
7 +class AlterImmerse3 extends Migration
8 +{
9 + /**
10 + * Run the migrations.
11 + *
12 + * @return void
13 + */
14 + public function up()
15 + {
16 + Schema::table('immerse', function (Blueprint $table) {
17 + $table->string('weather')->after('content')->default('')->comment('天气');
18 + $table->string('huangli')->after('weather')->default('')->comment('黄历');
19 + $table->string('longitude')->after('huangli')->default('')->comment('经度');
20 + $table->string('latitude')->after('longitude')->default('')->comment('纬度');
21 + $table->string('location')->after('latitude')->default('')->comment('所在地');
22 + });
23 +
24 + Schema::table('admin_make_video', function (Blueprint $table) {
25 + $table->string('longitude')->after('huangli')->default('')->comment('经度');
26 + $table->string('latitude')->after('longitude')->default('')->comment('纬度');
27 + $table->string('location')->after('latitude')->default('')->comment('所在地');
28 + });
29 + }
30 +
31 + /**
32 + * Reverse the migrations.
33 + *
34 + * @return void
35 + */
36 + public function down()
37 + {
38 + Schema::dropColumns('immerse', ['longitude', 'latitude', 'location']);
39 + Schema::dropColumns('admin_make_video', ['longitude', 'latitude', 'location']);
40 + }
41 +}