8000 建立复杂的自动化代码编写 · aobics/laravel_template_with_vue@66f80ff · GitHub
[go: up one dir, main page]

Skip to content

Commit 66f80ff

Browse files
committed
建立复杂的自动化代码编写
1 parent 26044fa commit 66f80ff

29 files changed

+1510
-91
lines changed

api/app/Http/Controllers/Admin/TableConfigController.php

Lines changed: 400 additions & 0 deletions
Large diffs are not rendered by default.

api/app/Http/Controllers/Admin/TableController.php

Lines changed: 106 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,112 @@ public function download()
243243
// 处理后端控制器数据
244244
$code = $this->createCodeBySnippet($snippet->back_api, $config);
245245
$code = str_replace("##fillable##", $fillable, $code);
246+
$format = "\$this->model::paginate(\$pageSize)";
247+
$value = '';
248+
foreach ($tableConfig as $v) {
249+
if ($v->query_type) {
250+
$title = ucfirst($v->column_name);
251+
$content = <<<STR
252+
$title()->
253+
STR;
254+
$value = $value . $content;
255+
}
256+
}
257+
$value = "\$this->model::".trim($value)."paginate(\$pageSize)";
258+
$code = str_replace($format, $value, $code);
246259
$fileName = $config['back_model'] . 'Controller.php';
247260
$path = 'api/app/Http/Controllers/Admin';
248261
file_put_contents(public_path('code/' . $tableName . '/' . $path) . "/$fileName", $code);
249262
// 后端模型
250263
$code = $this->createCodeBySnippet($snippet->back_model, $config);
264+
// 模型中的条件
265+
$format = "##scopeItem##";
266+
$value = '';
267+
foreach ($tableConfig as $v) {
268+
if ($v->query_type) {
269+
switch ($v->query_type) {
270+
case "=":
271+
$title = ucfirst($v->column_name);
272+
$content = <<<STR
273+
public function scope$title(\$query)
274+
{
275+
\$params = request()->input('$v->column_name');
276+
if (\$params) {
277+
return \$query = \$query->where('$v->column_name', \$params);
278+
} else {
279+
return \$query;
280+
}
281+
}
282+
283+
STR;
284+
break;
285+
case "like":
286+
$title = ucfirst($v->column_name);
287+
$content = <<<STR
288+
public function scope$title(\$query)
289+
{
290+
\$params = request()->input('$v->column_name');
291+
if (\$params) {
292+
return \$query = \$query->where('$v->column_name', 'like', "%".\$params."%");
293+
} else {
294+
return \$query;
295+
}
296+
}
297+
298+
STR;
299+
300+
break;
301+
case "<>":
302+
$title = ucfirst($v->column_name);
303+
$content = <<<STR
304+
public function scope$title(\$query)
305+
{
306+
\$params = request()->input('$v->column_name');
307+
if (\$params) {
308+
return \$query = \$query->where('$v->column_name', '<>', \$params);
309+
} else {
310+
return \$query;
311+
}
312+
}
313+
314+
STR;
315+
break;
316+
case "null":
317+
$title = ucfirst($v->column_name);
318+
$content = <<<STR
319+
public function scope$title(\$query)
320+
{
321+
\$params = request()->input('$v->column_name');
322+
if (\$params) {
323+
return \$query = \$query->whereNull('$v->column_name');
324+
} else {
325+
return \$query;
326+
}
327+
}
328+
329+
STR;
330+
break;
331+
case "notnull":
332+
$title = ucfirst($v->column_name);
333+
$content = <<<STR
334+
public function scope$title(\$query)
335+
{
336+
\$params = request()->input('$v->column_name');
337+
if (\$params) {
338+
return \$query = \$query->whereNotNull('$v->column_name');
339+
} else {
340+
return \$query;
341+
}
342+
}
343+
344+
STR;
345+
break;
346+
}
347+
$value = $value . $content;
348+
}
349+
}
350+
$code = str_replace($format, $value, $code);
351+
251352
$fileName = $config['back_model'] . '.php';
252353
$path = 'api/app/Models';
253354
file_put_contents(public_path('code/' . $tableName . '/' . $path) . "/$fileName", $code);
@@ -397,7 +498,7 @@ public function download()
397498
</el-col>
398499
STR;
399500
break;
400-
case "datetime":
501+
case "datetime":
401502
$content = <<<STR
402503
<el-col :span="12">
403504
<el-form-item label="$v->column_comment" prop="$v->column_name">
@@ -434,7 +535,7 @@ public function download()
434535
$value = '';
435536
foreach ($tableConfig as $v) {
436537
if ($v->query_type) {
437-
switch ($v->form_type){
538+
switch ($v->form_type) {
438539
case 'datetime':
439540
$content = <<<STR
440541
<el-form-item label="$v->column_comment">
@@ -450,7 +551,7 @@ public function download()
450551
451552
STR;
452553
break;
453-
case 'date':
554+
case 'date':
454555
$content = <<<STR
455556
<el-form-item label="$v->column_comment">
456557
<el-date-picker
@@ -467,7 +568,7 @@ public function download()
467568
break;
468569
case 'select':
469570
case 'radio':
470-
$content = <<<STR
571+
$content = <<<STR
471572
<el-form-item label="$v->column_comment">
472573
<el-select v-model="searchForm.$v->column_name" placeholder="请选择$v->column_comment">
473574
<el-option :value="true" :label="是"></el-option>
@@ -478,23 +579,19 @@ public function download()
478579
STR;
479580
break;
480581
default:
481-
$content = <<<STR
582+
$content = <<<STR
482583
<el-form-item label="$v->column_comment">
483584
<el-input v-model="searchForm.$v->column_name" placeholder="请输入$v->column_comment">
484585
</el-input>
485586
</el-form-item>
486587
487588
STR;
488-
489589
}
490-
491-
492590
$value = $value . $content;
493591
}
494592
}
495593
$code = str_replace($format, $value, $code);
496594

497-
498595
$fileName = 'index.vue';
499596
$path = "element/src/views/" . $config['front_model'];
500597
$file = public_path('code/' . $tableName . '/' . $path) . "/$fileName";

api/app/Http/Controllers/Admin/WechatController.php

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
<?php
22

3+
34
namespace App\Http\Controllers\Admin;
45

5-
use App\Models\Wechat;
6-
use Illuminate\Http\Request;
76
use Illuminate\Support\Facades\DB;
87
use Rap2hpoutre\FastExcel\FastExcel;
98
use Illuminate\Support\Facades\Validator;
9+
use Illuminate\Validation\Rule;
10+
use Illuminate\Http\Request;
1011

1112
class WechatController extends Controller
1213
{
1314
use Tool;
1415
protected $model = 'App\Models\Wechat'; // 当前模型
15-
protected $fillable = []; // 当前模型可以修改和新增的字段
16+
protected $fillable = ['app_id', 'app_secret', 'type', 'status']; // 当前模型可以修改和新增的字段
1617
protected $resource = 'App\Http\Resources\Wechat'; // 显示个体资源
1718
protected $resourceCollection = 'App\Http\Resources\WechatCollection'; // 显示资源集合
1819
protected $map = []; // 导入导出时候 数据表字段与说明的映射表
@@ -27,7 +28,7 @@ public function index(Request $request)
2728

2829
protected function getListData($pageSize){
2930
// 当前列表数据 对应于原来的index
30-
$data = $this->model::paginate($pageSize);
31+
$data = $this->model::App_id()->App_secret()->paginate($pageSize);
3132
return new $this->resourceCollection($data);
3233
}
3334

@@ -277,8 +278,8 @@ protected function UpdateRule($id){
277278
}
278279

279280

280-
// protected function message(){
281-
// return [];
282-
// }
281+
protected function message(){
282+
return [];
283+
}
283284

284-
}
285+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use Illuminate\Http\Resources\Json\JsonResource;
6+
7+
class TableConfig extends JsonResource
8+
{
9+
/**
10+
* Transform the resource into an array.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return array
14+
*/
15+
public function toArray($request)
16+
{
17+
// $data = parent::toArray($request);
18+
// $data = [
19+
// 'id' => $this->id?:0,
20+
// 'table_name' => $this->table_name,
21+
// 'column_name' => $this->column_name,
22+
// 'data_type' => $this->data_type,
23+
// 'column_comment' => $this->column_comment,
24+
// 'is_required' => is_bool($this->is_required)?$this->is_required:false,
25+
//
26+
// ];
27+
28+
// 数据转换
29+
$data = parent::toArray($request);
30+
return $data;
31+
}
32+
33+
public function with($request)
34+
{
35+
return [
36+
'status' => 'success',
37+
'status_code' => 200
38+
];
39+
}
40+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use Illuminate\Http\Resources\Json\ResourceCollection;
6+
7+
class TableConfigCollection extends ResourceCollection
8+
{
9+
/**
10+
* Transform the resource collection into an array.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return array
14+
*/
15+
public function toArray($request)
16+
{
17+
return [
18+
'data' => $this->collection,
19+
'status' => 'success',
20+
'status_code' => 200
21+
];
22+
}
23+
}

api/app/Http/Resources/Template.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ class ##name## extends JsonResource
1515
public function toArray($request)
1616
{
1717
$data = parent::toArray($request);
18-
$data['created_at'] = $data['created_at'] * 1000;
19-
$data['updated_at'] = $data['updated_at'] * 1000;
2018
// 数据转换
2119

2220
return $data;

api/app/Http/Resources/Wechat.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@ class Wechat extends JsonResource
1515
public function toArray($request)
1616
{
1717
$data = parent::toArray($request);
18+
19+
// 数据转换
20+
1821
return $data;
1922
}
2023

2124
public function with($request)
2225
{
2326
return [
24-
'status' => 'success',
25-
'status_code' => 200
27+
'status' => 'success',
28+
'status_code' => 200
2629
];
2730
}
28-
}
31+
}

api/app/Http/Resources/WechatCollection.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class WechatCollection extends ResourceCollection
1515
public function toArray($request)
1616
{
1717
return [
18-
'data' => $this->collection,
19-
'status' => 'success',
20-
'status_code' => 200
18+
'data' => $this->collection,
19+
'status' => 'success',
20+
'status_code' => 200
2121
];
2222
}
2323
}

api/app/Models/TableConfig.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
use Illuminate\Database\Eloquent\Model;
6+
7+
class TableConfig extends Model
8+
{
9+
//
10+
protected $dateFormat = "Y-m-d H:i:s";
11+
protected $casts = [
12+
'is_required' => 'boolean',
13+
'is_list' => 'boolean',
14+
'is_form' => 'boolean',
15+
];
16+
17+
protected $guarded = [];
18+
19+
20+
}

api/app/Models/Template.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@
77
class ##name## extends Model
88
{
99
//
10-
protected $casts =[
11-
'created_at' => 'timestamp',
12-
'updated_at' => 'timestamp'
13-
];
14-
10+
protected $dateFormat = "Y-m-d H:i:s";
1511
protected $guarded = [];
1612

1713

0 commit comments

Comments
 (0)
0