Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meibuyu-micro
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
without authentication
meibuyu-micro
Commits
c9454cdf
Commit
c9454cdf
authored
Apr 22, 2021
by
王源
🎧
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'hotfix' into test
parents
80a40f66
7479eeb3
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
94 additions
and
962 deletions
+94
-962
message.php
publish/message.php
+0
-12
MakeModelCommand.php
src/Command/MakeModelCommand.php
+77
-135
RepositoryCommand.php
src/Command/RepositoryCommand.php
+0
-48
ValidatorCommand.php
src/Command/ValidatorCommand.php
+0
-45
controller.stub
src/Command/stubs/controller.stub
+1
-0
migration.stub
src/Command/stubs/migration.stub
+6
-4
repository.stub
src/Command/stubs/repository.stub
+6
-15
repositoryInterface.stub
src/Command/stubs/repositoryInterface.stub
+1
-1
validator.stub
src/Command/stubs/validator.stub
+1
-4
ConfigProvider.php
src/ConfigProvider.php
+0
-10
FileAlreadyExistsException.php
src/Generator/FileAlreadyExistsException.php
+0
-15
Generator.php
src/Generator/Generator.php
+0
-239
RepositoryEloquentGenerator.php
src/Generator/RepositoryEloquentGenerator.php
+0
-74
RepositoryInterfaceGenerator.php
src/Generator/RepositoryInterfaceGenerator.php
+0
-22
Stub.php
src/Generator/Stubs/Stub.php
+0
-152
eloquent.stub
src/Generator/Stubs/repository/eloquent.stub
+0
-32
interface.stub
src/Generator/Stubs/repository/interface.stub
+0
-23
validator.stub
src/Generator/Stubs/validator/validator.stub
+0
-24
ValidatorGenerator.php
src/Generator/ValidatorGenerator.php
+0
-22
MessageCenter.php
src/Message/MessageCenter.php
+0
-83
functions.php
src/functions.php
+2
-2
No files found.
publish/message.php
deleted
100644 → 0
View file @
80a40f66
<?php
declare
(
strict_types
=
1
);
return
[
'center'
=>
[
'ip'
=>
env
(
'MESSAGE_CENTER_IP'
,
'127.0.0.1'
),
'domain'
=>
env
(
'MESSAGE_CENTER_DOMAIN'
,
'http://localhost'
),
'proxy'
=>
env
(
'MESSAGE_CENTER_PROXY'
),
'proxy_port'
=>
env
(
'MESSAGE_CENTER_PROXY_PORT'
,
80
),
]
];
src/Command/MakeModelCommand.php
View file @
c9454cdf
...
...
@@ -24,10 +24,10 @@ class MakeModelCommand extends HyperfCommand
*/
protected
$container
;
private
$path
=
''
;
private
$appPath
=
''
;
private
$path
;
private
$appPath
;
private
$builder
=
null
;
private
$builder
;
private
$table
=
""
;
private
$tableIndex
=
0
;
...
...
@@ -38,40 +38,6 @@ class MakeModelCommand extends HyperfCommand
private
$currentTableStructure
=
[];
private
$cc
=
[
'bigint'
=>
'integer'
,
'int'
=>
'integer'
,
'tinyint'
=>
'integer'
,
'smallint'
=>
'integer'
,
'mediumint'
=>
'integer'
,
'integer'
=>
'integer'
,
'numeric'
=>
'integer'
,
'float'
=>
'float'
,
'real'
=>
'real'
,
'double'
=>
'double'
,
'decimal'
=>
'decimal'
,
'bool'
=>
'bool'
,
'boolean'
=>
'boolean'
,
'char'
=>
'string'
,
'tinytext'
=>
'string'
,
'text'
=>
'string'
,
'mediumtext'
=>
'string'
,
'longtext'
=>
'string'
,
'year'
=>
'string'
,
'varchar'
=>
'string'
,
'string'
=>
'string'
,
'object'
=>
'object'
,
'enum'
=>
'object'
,
'set'
=>
'object'
,
'date'
=>
'date'
,
'datetime'
=>
'datetime'
,
'custom_datetime'
=>
'custom_datetime'
,
'timestamp'
=>
'timestamp'
,
'collection'
=>
'collection'
,
'array'
=>
'array'
,
'json'
=>
'json'
,
];
public
function
__construct
(
ContainerInterface
$container
)
{
$this
->
container
=
$container
;
...
...
@@ -193,13 +159,12 @@ class MakeModelCommand extends HyperfCommand
$relation
[
'constraint_table'
]
=
$ts
[
1
];
$relation
[
'constraint_table_key'
]
=
Str
::
singular
(
$ts
[
1
])
.
"_id"
;
$relation
[
'local_table'
]
=
$ts
[
0
];
$relation
[
'local_table_key'
]
=
$fv
[
'column_name'
];
}
else
{
$relation
[
'constraint_table'
]
=
$ts
[
0
];
$relation
[
'constraint_table_key'
]
=
Str
::
singular
(
$ts
[
0
])
.
"_id"
;
$relation
[
'local_table'
]
=
$ts
[
1
];
$relation
[
'local_table_key'
]
=
$fv
[
'column_name'
];
}
$relation
[
'local_table_key'
]
=
$fv
[
'column_name'
];
$relation
[
'relation_table'
]
=
$fv
[
'table_name'
];
$relation
[
'function'
]
=
Str
::
snake
(
$relation
[
'constraint_table'
]);
$relation
[
'relation_model_name'
]
=
Str
::
studly
(
Str
::
singular
(
$relation
[
'constraint_table'
]));
...
...
@@ -244,8 +209,8 @@ class MakeModelCommand extends HyperfCommand
$indexes
=
array_map
(
'get_object_vars'
,
$indexes
);
$indexes
=
collect
(
$indexes
)
->
groupBy
(
"table_name"
)
->
toArray
();
foreach
(
$tables
as
$k
=>
$v
)
{
$v
[
'fields'
]
=
isset
(
$fields
[
$k
])
?
$fields
[
$k
]
:
[];
$v
[
'constraints'
]
=
isset
(
$constraints
[
$k
])
?
$constraints
[
$k
]
:
[];
$v
[
'fields'
]
=
$fields
[
$k
]
??
[];
$v
[
'constraints'
]
=
$constraints
[
$k
]
??
[];
if
(
isset
(
$indexes
[
$k
]))
{
$v
[
'indexes'
]
=
collect
(
$indexes
[
$k
])
->
groupBy
(
"index_name"
)
->
toArray
();
}
else
{
...
...
@@ -260,7 +225,6 @@ class MakeModelCommand extends HyperfCommand
private
function
resortTable
(
$tables
)
{
$done
=
false
;
$tables
=
$tables
;
while
(
!
$done
)
{
foreach
(
$tables
as
$k
=>
$v
)
{
if
(
!
$v
[
'constraints'
])
{
...
...
@@ -311,7 +275,7 @@ class MakeModelCommand extends HyperfCommand
$timestamps
=
0
;
$softDelete
=
false
;
$list
=
$info
[
'fields'
];
foreach
(
$list
as
$
k
=>
$
v
)
{
foreach
(
$list
as
$v
)
{
$name
=
$v
[
'column_name'
];
$pc
=
[
'bigint'
=>
'integer'
,
...
...
@@ -337,15 +301,15 @@ class MakeModelCommand extends HyperfCommand
'string'
=>
'string'
,
'enum'
=>
'array'
,
'set'
=>
'array'
,
'date'
=>
'
\Carbon\Carbon
'
,
'datetime'
=>
'
\Carbon\Carbon
'
,
'custom_datetime'
=>
'
\Carbon\Carbon
'
,
'timestamp'
=>
'
\Carbon\Carbon
'
,
'date'
=>
'
string
'
,
'datetime'
=>
'
string
'
,
'custom_datetime'
=>
'
string
'
,
'timestamp'
=>
'
string
'
,
'collection'
=>
'collection'
,
'array'
=>
'array'
,
'json'
=>
'string'
,
];
$properties
.=
" * @property "
.
(
isset
(
$pc
[
$v
[
'data_type'
]])
?
$pc
[
$v
[
'data_type'
]]
:
"string"
)
.
" $"
.
$name
.
(
$v
[
'column_comment'
]
?
" "
.
$v
[
'column_comment'
]
:
""
)
.
"
\n
"
;
$properties
.=
" * @property "
.
(
$pc
[
$v
[
'data_type'
]]
??
"string"
)
.
" $"
.
$name
.
(
$v
[
'column_comment'
]
?
" "
.
$v
[
'column_comment'
]
:
""
)
.
"
\n
"
;
if
(
$name
==
'created_at'
||
$name
==
'updated_at'
)
{
$timestamps
++
;
}
...
...
@@ -431,7 +395,7 @@ class MakeModelCommand extends HyperfCommand
{
$author
=
$this
->
input
->
getOption
(
"author"
);
$patterns
=
array_merge
(
$patterns
,
[
'%user%'
,
'%date%'
,
'%time%'
]);
$replacements
=
array_merge
(
$replacements
,
[
$author
?
$author
:
"Auto generated."
,
date
(
"Y-m-d"
),
date
(
"h:i:s"
)]);
$replacements
=
array_merge
(
$replacements
,
[
$author
?:
"Auto generated."
,
date
(
"Y-m-d"
),
date
(
"h:i:s"
)]);
return
str_replace
(
$patterns
,
$replacements
,
$content
);
}
...
...
@@ -449,8 +413,7 @@ class MakeModelCommand extends HyperfCommand
}
file_put_contents
(
$file
,
$content
);
$file
=
pathinfo
(
$file
,
PATHINFO_FILENAME
);
$this
->
info
(
"<info>[INFO] Created File:</info>
{
$file
}
"
);
$this
->
info
(
"<info>[INFO] Created File:</info>
$file
"
);
return
true
;
}
...
...
@@ -500,9 +463,9 @@ class MakeModelCommand extends HyperfCommand
//显示
$show
=
"
\$
info =
\$
this->model
\n
"
;
//新增
$create
=
"/** @var
{
$modelClass
}
\$
model */
\n
\t\t\t\$
model = parent::create(
\$
attributes);
\n
"
;
$create
=
"/** @var
$modelClass
\$
model */
\n
\t\t\t\$
model = parent::create(
\$
attributes);
\n
"
;
//新增
$update
=
"/** @var
{
$modelClass
}
\$
model */
\n
\t\t\t\$
model = parent::update(
\$
attributes,
\$
id);
\n
"
;
$update
=
"/** @var
$modelClass
\$
model */
\n
\t\t\t\$
model = parent::update(
\$
attributes,
\$
id);
\n
"
;
//删除
$delete
=
''
;
//关联查询
...
...
@@ -513,7 +476,7 @@ class MakeModelCommand extends HyperfCommand
$list
.=
"
\n\t\t
->with(["
;
$show
.=
"
\n\t\t
->with(["
;
$t
=
[];
foreach
(
$info
[
'relations'
][
'belongsTo'
]
as
$
k
=>
$
v
)
{
foreach
(
$info
[
'relations'
][
'belongsTo'
]
as
$v
)
{
$x
=
"
\n\t\t\t
'"
.
$v
[
'function'
]
.
"' => function (
\$
q) {\n"
;
$fields
=
$this
->
listColumns
(
$v
[
'relation_table'
]);
$fields
=
collect
(
$fields
[
'fields'
])
->
keyBy
(
'column_name'
)
...
...
@@ -551,7 +514,7 @@ class MakeModelCommand extends HyperfCommand
if
(
isset
(
$info
[
'relations'
][
'hasMany'
]))
{
foreach
(
$info
[
'relations'
][
'hasMany'
]
as
$v
)
{
$f
=
Str
::
camel
(
$v
[
'function'
]);
$rs
.=
"
\n\t
public function
{
$f
}
(
\$
id): array
\n
"
;
$rs
.=
"
\n\t
public function
$f
(
\$
id): array
\n
"
;
$rs
.=
"
\t
{\n"
;
$rs
.=
"
\t\t\$
pageSize = (int)
\$
this->request->input('page_size', DEFAULT_PAGE_SIZE);
\n
"
;
$rs
.=
"
\t\t
return
\$
this->find(
\$
id)->
{
$v
[
'function'
]
}
()->orderByDesc('id')->paginate(
\$
pageSize)->toArray();
\n
"
;
...
...
@@ -577,14 +540,12 @@ class MakeModelCommand extends HyperfCommand
private
function
listColumns
(
$table
)
{
$table
=
trim
(
$table
);
$table
=
isset
(
$this
->
allTableStructures
[
$table
])
?
$this
->
allTableStructures
[
$table
]
:
[];
return
$table
;
return
$this
->
allTableStructures
[
$table
]
??
[];
}
/**
* 添加类到依赖注入配置文件
* @param $modelClass
* @return bool
*/
private
function
addDepends
(
$modelClass
)
{
...
...
@@ -592,12 +553,11 @@ class MakeModelCommand extends HyperfCommand
if
(
file_exists
(
$file
))
{
$content
=
file_get_contents
(
$file
);
if
(
strpos
(
$content
,
"\App\Repository\Interfaces
\\
"
.
$modelClass
.
"Repository::class"
)
!==
false
)
{
return
true
;
return
;
}
$content
=
str_replace
(
"]"
,
"
\\
App
\\
Repository
\\
Interfaces
\\
"
.
$modelClass
.
"Repository::class =>
\\
App
\\
Repository
\\
Eloquent
\\
"
.
$modelClass
.
"RepositoryEloquent::class,
\n
]"
,
$content
);
$this
->
writeToFile
(
$file
,
$content
);
}
}
private
function
makeController
()
...
...
@@ -627,9 +587,9 @@ class MakeModelCommand extends HyperfCommand
$rs
.=
"
\n\t
* @param;
\$
id id编号"
;
$rs
.=
"
\n\t
* @return mixed"
;
$rs
.=
"
\n\t
*/"
;
$rs
.=
"
\n\t
public function
{
$f
}
(
\$
id)
\n
"
;
$rs
.=
"
\n\t
public function
$f
(
\$
id)
\n
"
;
$rs
.=
"
\t
{\n"
;
$rs
.=
"
\t\t\$
data =
\$
this->repository->
{
$f
}
(
\$
id);
\n
"
;
$rs
.=
"
\t\t\$
data =
\$
this->repository->
$f
(
\$
id);
\n
"
;
$rs
.=
"
\t\t
return success('获取成功',
\$
data);
\n
"
;
$rs
.=
"
\t
}
\n
"
;
$routes
[]
=
$v
[
'function'
];
...
...
@@ -645,9 +605,10 @@ class MakeModelCommand extends HyperfCommand
$this
->
addRoutes
(
$modelClass
,
$routes
);
}
/**添加Controller到路由类
/**
* 添加Controller到路由类
* @param $modelClass
* @
return bool
* @
param array $routes
*/
private
function
addRoutes
(
$modelClass
,
$routes
=
[])
{
...
...
@@ -657,20 +618,20 @@ class MakeModelCommand extends HyperfCommand
$content
=
file_get_contents
(
$file
);
$group
=
str_replace
(
"_"
,
"/"
,
Str
::
snake
(
$table
));
if
(
strpos
(
$content
,
"Router::addGroup('"
.
$group
.
"', function () {"
)
!==
false
)
{
return
true
;
return
;
}
$info
=
$this
->
currentTableStructure
;
$tableComment
=
(
isset
(
$info
[
'table_comment'
])
&&
$info
[
'table_comment'
])
?
$info
[
'table_comment'
]
:
$table
;
$content
.=
"
\n\t
// "
.
$tableComment
;
$content
.=
"
\n\t
Router::addGroup('"
.
$group
.
"', function () {"
;
$content
.=
"
\n\t\t
Router::get('', 'App\Controller
\\
"
.
$modelClass
.
"Controller@index');"
;
$content
.=
"
\n\t\t
Router::get('/
{
id
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@show');"
;
$content
.=
"
\n\t\t
Router::get('/
{
id
:\d+
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@show');"
;
$content
.=
"
\n\t\t
Router::post('', 'App\Controller
\\
"
.
$modelClass
.
"Controller@create');"
;
$content
.=
"
\n\t\t
Router::patch('/
{
id
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@update');"
;
$content
.=
"
\n\t\t
Router::delete('/
{
id
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@delete');"
;
$content
.=
"
\n\t\t
Router::patch('/
{
id
:\d+
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@update');"
;
$content
.=
"
\n\t\t
Router::delete('/
{
id
:\d+
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@delete');"
;
if
(
$routes
)
{
foreach
(
$routes
as
$v
)
{
$content
.=
"
\n\t\t
Router::get('/
$v
/
\{id\
}', 'App\Controller
\\
"
.
$modelClass
.
"Controller@
$v
');"
;
$content
.=
"
\n\t\t
Router::get('/
$v
/
{
id:\d+
}
', 'App\Controller
\\
"
.
$modelClass
.
"Controller@
$v
');"
;
}
}
$content
.=
"
\n\t
});"
;
...
...
@@ -695,7 +656,6 @@ class MakeModelCommand extends HyperfCommand
$filterFields
=
[
"id"
,
"created_at"
,
"updated_at"
,
"deleted_at"
];
$rules
=
''
;
$attributes
=
''
;
$messages
=
[];
$list
=
$info
[
'fields'
];
foreach
(
$list
as
$v
)
{
$name
=
$v
[
'column_name'
];
...
...
@@ -703,10 +663,8 @@ class MakeModelCommand extends HyperfCommand
$type
=
$v
[
'data_type'
];
$key
=
$v
[
'column_key'
];
$null
=
$v
[
'is_nullable'
];
// $extra = $v['extra'];
$comment
=
$v
[
'column_comment'
];
$length
=
$v
[
'length'
];
$msgName
=
(
$comment
?
$comment
:
$name
);
if
(
in_array
(
$name
,
$filterFields
))
{
continue
;
}
...
...
@@ -715,7 +673,6 @@ class MakeModelCommand extends HyperfCommand
if
(
$null
!==
'YES'
)
{
if
(
$default
!==
''
&&
$default
!==
'0'
&&
!
$default
)
{
$required
=
"required"
;
$messages
[]
=
"
\t\t
'
{
$name
}
.
{
$required
}
' => '
{
$msgName
}
不能为空!'"
;
}
}
$rs
[]
=
$required
;
...
...
@@ -727,7 +684,6 @@ class MakeModelCommand extends HyperfCommand
case
"int"
:
case
"integer"
:
$rs
[]
=
'integer'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.integer' => '
{
$msgName
}
只能是整数!'"
;
break
;
case
"decimal"
:
case
"double"
:
...
...
@@ -735,7 +691,6 @@ class MakeModelCommand extends HyperfCommand
case
"numeric"
:
case
"real"
:
$rs
[]
=
'numeric'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.numeric' => '
{
$msgName
}
只能是数字支持小数!'"
;
break
;
case
"char"
:
case
"varchar"
:
...
...
@@ -746,7 +701,6 @@ class MakeModelCommand extends HyperfCommand
$rs
[]
=
'string'
;
if
(
$length
)
{
$rs
[]
=
'max:'
.
$length
;
$messages
[]
=
"
\t\t
'
{
$name
}
.max' => '
{
$msgName
}
字符长度不能超过
{
$length
}
!'"
;
}
break
;
case
"date"
:
...
...
@@ -755,46 +709,39 @@ class MakeModelCommand extends HyperfCommand
case
"timestamp"
:
case
"year"
:
$rs
[]
=
'date'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.date' => '
{
$msgName
}
不符合日期时间格式!'"
;
break
;
case
"enum"
:
case
"set"
:
$rs
[]
=
'in:['
.
$length
.
"]"
;
$messages
[]
=
"
\t\t
'
{
$name
}
.in' => '
{
$msgName
}
的值只能在[
{
$length
}
]列表中!'"
;
break
;
default
:
if
(
Str
::
contains
(
$name
,
"email"
)
||
Str
::
contains
(
$name
,
"e-mail"
)
||
Str
::
contains
(
$name
,
"e_mail"
))
{
$rs
[]
=
'email'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.email' => '
{
$msgName
}
只支持邮箱格式!'"
;
}
elseif
(
$name
==
'url'
||
Str
::
contains
(
$name
,
"_url"
)
||
Str
::
contains
(
$name
,
"url_"
))
{
$rs
[]
=
'url'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.email' => '
{
$msgName
}
只支持url格式!'"
;
}
elseif
(
$name
==
'date'
||
Str
::
contains
(
$name
,
"_date"
)
||
Str
::
contains
(
$name
,
"date_"
))
{
$rs
[]
=
'date'
;
$messages
[]
=
"
\t\t
'
{
$name
}
.email' => '
{
$msgName
}
不符合日期时间格式!'"
;
}
break
;
}
if
(
$key
==
'uni'
)
{
$rs
[]
=
"unique:
$table
,"
.
$name
;
$messages
[]
=
"
\t\t
'
{
$name
}
.unique' => '
{
$msgName
}
的值在数据库中已经存在!'"
;
}
if
(
$comment
)
{
$attributes
.=
"
\t\t
'"
.
$name
.
"' => '"
.
$comment
.
"',"
.
"
\n
"
;
}
$rules
.=
"
\t\t\t
'"
.
$name
.
"' => '"
.
implode
(
"|"
,
$rs
)
.
"',"
.
(
$comment
?
"// "
.
$comment
.
"-"
.
$type
:
"//"
.
$type
)
.
"
\n
"
;
}
$messages
=
join
(
",
\n
"
,
$messages
);
$patterns
=
[
"%ModelClass%"
,
'%createRules%'
,
'%updateRules%'
,
'%attributes%'
,
'%messages%'
];
$patterns
=
[
"%ModelClass%"
,
'%createRules%'
,
'%updateRules%'
,
'%attributes%'
];
$createRules
=
$rules
;
$updateRules
=
str_replace
(
"nullable"
,
"sometimes|nullable"
,
$rules
);
$updateRules
=
str_replace
(
"required"
,
"sometimes|required"
,
$updateRules
);
$replacements
=
[
$modelClass
,
$createRules
,
$updateRules
,
$attributes
,
$messages
];
$replacements
=
[
$modelClass
,
$createRules
,
$updateRules
,
$attributes
];
$content
=
$this
->
buildField
(
$patterns
,
$replacements
,
$content
);
$this
->
writeToFile
(
$file
,
$content
);
}
...
...
@@ -814,14 +761,13 @@ class MakeModelCommand extends HyperfCommand
$fields
=
[];
$otherModel
=
[];
$generateCount
=
$this
->
input
->
getOption
(
"seeder"
);
$generateCount
=
$generateCount
?
$generateCount
:
30
;
$generateCount
=
$generateCount
?:
30
;
$otherProcess
=
""
;
$list
=
$info
[
'fields'
];
$maxNumber
=
4
;
foreach
(
$list
as
$v
)
{
$name
=
$v
[
'column_name'
];
$type
=
$v
[
'data_type'
];
$nullAble
=
(
$v
[
'is_nullable'
]
!==
'YES'
);
$length
=
explode
(
" "
,
$v
[
'length'
]);
if
(
in_array
(
$name
,
$filterFields
))
{
continue
;
...
...
@@ -835,25 +781,25 @@ class MakeModelCommand extends HyperfCommand
case
"int"
:
case
"integer"
:
if
(
$name
==
"sex"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomElement([0,1]),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomElement([0,1]),"
;
}
else
if
(
Str
::
contains
(
$name
,
"status"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomDigit,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomDigit,"
;
}
else
if
(
Str
::
endsWith
(
$name
,
"_id"
))
{
$o
=
str_replace
(
"_id"
,
""
,
$name
);
$os
=
Str
::
plural
(
$o
);
if
(
in_array
(
$os
,
$this
->
tables
))
{
$o
=
Str
::
studly
(
$o
);
$otherModel
[]
=
"
\n
use App\Model
\\
"
.
$o
.
";"
;
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
$o
::orderBy(Db::raw('rand()'))->first()->id,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
$o
::orderBy(Db::raw('rand()'))->first()->id,"
;
}
else
{
$n
=
((
isset
(
$length
[
0
])
&&
$length
[
0
]
&&
$length
[
0
]
<
$maxNumber
)
?
$length
[
0
]
:
$maxNumber
);
$n
=
rand
(
1
,
$n
);
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomNumber(
$n
),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomNumber(
$n
),"
;
}
}
else
{
$n
=
((
isset
(
$length
[
0
])
&&
$length
[
0
]
<
$maxNumber
)
?
$length
[
0
]
:
$maxNumber
);
$n
=
rand
(
1
,
$n
);
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomNumber(
$n
),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomNumber(
$n
),"
;
}
break
;
case
"decimal"
:
...
...
@@ -865,93 +811,91 @@ class MakeModelCommand extends HyperfCommand
$n
=
rand
(
1
,
$n
);
$n2
=
((
isset
(
$length
[
1
])
&&
$length
[
1
]
<
$maxNumber
)
?
$length
[
1
]
:
2
);
$n3
=
$n2
+
20
;
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomFloat(
$n
,
$n2
,
$n3
),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomFloat(
$n
,
$n2
,
$n3
),"
;
break
;
case
"char"
:
case
"varchar"
:
$n
=
((
isset
(
$length
[
0
])
&&
$length
[
0
])
?
$length
[
0
]
:
255
);
if
(
$name
==
"ip"
||
$name
==
"ip
"
||
$name
==
"ip
_address"
||
$name
==
"ip_addr"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->ipv4,"
;
if
(
$name
==
"ip"
||
$name
==
"ip_address"
||
$name
==
"ip_addr"
)
{
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->ipv4,"
;
}
else
if
(
Str
::
contains
(
$name
,
"email"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->email,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->email,"
;
}
else
if
(
$name
==
"userName"
||
$name
==
"user_name"
||
$name
==
"uname"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->userName,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->userName,"
;
}
else
if
(
$name
==
"url"
||
$name
==
"domain"
||
Str
::
endsWith
(
$name
,
"_url"
)
||
Str
::
startsWith
(
$name
,
"url_"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->url,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->url,"
;
}
else
if
(
$name
==
"company"
||
$name
==
"company_name"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->company,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->company,"
;
}
else
if
(
$name
==
"gender"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->title(),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->title(),"
;
}
else
if
(
$name
==
"name"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->name(),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->name(),"
;
}
else
if
(
Str
::
contains
(
$name
,
"city"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->city,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->city,"
;
}
else
if
(
Str
::
contains
(
$name
,
"street"
)
||
Str
::
contains
(
$name
,
"address"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->streetAddress,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->streetAddress,"
;
}
else
if
(
Str
::
contains
(
$name
,
"postcode"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->postcode,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->postcode,"
;
}
else
if
(
Str
::
contains
(
$name
,
"country"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->country,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->country,"
;
}
else
if
(
Str
::
contains
(
$name
,
"phoneNumber"
)
||
$name
==
"tel"
||
$name
==
"mobile"
||
Str
::
contains
(
$name
,
"phone"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->phoneNumber,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->phoneNumber,"
;
}
else
if
(
Str
::
contains
(
$name
,
"color"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->colorName,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->colorName,"
;
}
else
if
(
Str
::
contains
(
$name
,
"image"
)
||
Str
::
contains
(
$name
,
"path"
))
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->imageUrl(640, 480),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->imageUrl(640, 480),"
;
}
else
if
(
$name
==
"ean"
||
$name
==
"bar_code"
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->ean13,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->ean13,"
;
}
else
if
(
$n
<
10
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->word,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->word,"
;
}
elseif
(
$n
<
100
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->sentence(6),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->sentence(6),"
;
}
else
{
$n
=
rand
(
2
,
5
);
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->paragraph(
$n
, true),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->paragraph(
$n
, true),"
;
}
break
;
case
"tinytext"
:
case
"mediumtext"
:
case
"longtext"
:
case
"text"
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->text,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->text,"
;
break
;
case
"date"
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->date('Y-m-d'),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->date('Y-m-d'),"
;
break
;
case
"datetime"
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->date('Y-m-d').' '.
\$
faker->time('H:i:s'),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->date('Y-m-d').' '.
\$
faker->time('H:i:s'),"
;
break
;
case
"time"
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->time('H:i:s'),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->time('H:i:s'),"
;
break
;
case
"timestamp"
:
if
(
$name
==
'created_at'
||
$name
==
'updated_at'
||
$name
==
'deleted_at'
)
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->date('Y-m-d').' '.
\$
faker->time('H:i:s'),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->date('Y-m-d').' '.
\$
faker->time('H:i:s'),"
;
}
else
{
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->unixTime(),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->unixTime(),"
;
}
break
;
case
"year"
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->year(),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->year(),"
;
break
;
case
"enum"
:
case
"set"
:
$n
=
implode
(
","
,
$length
);
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->randomElement([
$n
]),"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->randomElement([
$n
]),"
;
break
;
default
:
$fields
[]
=
"
\t\t\t\t
'
{
$name
}
' =>
\$
faker->word,"
;
$fields
[]
=
"
\t\t\t\t
'
$name
' =>
\$
faker->word,"
;
break
;
}
}
$fields
=
join
(
"
\n
"
,
$fields
);
$otherModel
=
join
(
""
,
$otherModel
);
//if(isset($info['']))
$patterns
=
[
"%modelClass%"
,
'%className%'
,
'%otherModel%'
,
'%generateCount%'
,
'%fields%'
,
'%otherProcess%'
];
$replacements
=
[
$modelClass
,
$className
,
$otherModel
,
$generateCount
,
$fields
,
$otherProcess
];
$content
=
$this
->
buildField
(
$patterns
,
$replacements
,
$content
);
$this
->
writeToFile
(
$file
,
$content
);
$this
->
addSeeder
();
}
...
...
@@ -966,7 +910,7 @@ class MakeModelCommand extends HyperfCommand
}
$content
=
file_get_contents
(
$file
);
if
(
strpos
(
$content
,
Str
::
studly
(
$this
->
table
)
.
"TableSeeder::class"
)
!==
false
)
{
return
true
;
return
;
}
$content
=
str_replace
(
"];"
,
"
\t\t\t
"
.
Str
::
studly
(
$this
->
table
)
.
"TableSeeder::class,
\n\t\t
];"
,
$content
);
$this
->
writeToFile
(
$file
,
$content
);
...
...
@@ -994,7 +938,6 @@ class MakeModelCommand extends HyperfCommand
$default
=
$v
[
'column_default'
];
$type
=
$v
[
'data_type'
];
$collation
=
$v
[
'collation_name'
];
$key
=
$v
[
'column_key'
];
$null
=
$v
[
'is_nullable'
];
$extra
=
$v
[
'extra'
];
$comment
=
$v
[
'column_comment'
];
...
...
@@ -1037,7 +980,7 @@ class MakeModelCommand extends HyperfCommand
'numeric'
=>
'decimal'
,
'real'
=>
'double'
,
];
$t
.=
(
isset
(
$tc
[
$type
])
?
$tc
[
$type
]
:
$type
)
.
"('"
.
$name
.
"'"
;
$t
.=
(
$tc
[
$type
]
??
$type
)
.
"('"
.
$name
.
"'"
;
if
(
$length
)
{
$length
=
explode
(
" "
,
$length
);
$length
=
explode
(
","
,
$length
[
0
]);
...
...
@@ -1079,7 +1022,7 @@ class MakeModelCommand extends HyperfCommand
$tc
=
[
'datetime'
=>
'dateTime'
,
];
$t
.=
(
isset
(
$tc
[
$type
])
?
$tc
[
$type
]
:
$type
)
.
"('"
.
$name
.
"')"
;
$t
.=
(
$tc
[
$type
]
??
$type
)
.
"('"
.
$name
.
"')"
;
break
;
case
"binary"
:
case
"varbinary"
:
...
...
@@ -1094,7 +1037,7 @@ class MakeModelCommand extends HyperfCommand
$tc
=
[
'set'
=>
'enum'
,
];
$t
.=
(
isset
(
$tc
[
$type
])
?
$tc
[
$type
]
:
$type
)
.
"('"
.
$name
.
"'"
;
$t
.=
(
$tc
[
$type
]
??
$type
)
.
"('"
.
$name
.
"'"
;
$t
.=
", [{
$length
}])"
;
break
;
...
...
@@ -1115,7 +1058,7 @@ class MakeModelCommand extends HyperfCommand
'multipolygon'
=>
'multiPolygon'
,
'multilinestring'
=>
'multiLineString'
,
];
$t
.=
(
isset
(
$tc
[
$type
])
?
$tc
[
$type
]
:
$type
)
.
"('"
.
$name
.
"'"
;
$t
.=
(
$tc
[
$type
]
??
$type
)
.
"('"
.
$name
.
"'"
;
if
(
$length
)
{
$t
.=
", "
.
$length
;
}
...
...
@@ -1158,20 +1101,20 @@ class MakeModelCommand extends HyperfCommand
$fields
=
implode
(
"','"
,
$fields
);
if
(
$k
==
'PRIMARY'
)
{
if
(
!
$pri
)
{
$attributes
[]
=
"
\t\t\t\$
table->primary(['
{
$fields
}
']);"
;
$attributes
[]
=
"
\t\t\t\$
table->primary(['
$fields
']);"
;
}
}
else
{
if
(
$v
[
0
][
'non_unique'
]
===
0
)
{
$attributes
[]
=
"
\t\t\t\$
table->unique(['
{
$fields
}
'], '
{
$k
}
');"
;
$attributes
[]
=
"
\t\t\t\$
table->unique(['
$fields
'], '
$k
');"
;
}
else
{
$attributes
[]
=
"
\t\t\t\$
table->index(['
{
$fields
}
'], '
{
$k
}
');"
;
$attributes
[]
=
"
\t\t\t\$
table->index(['
$fields
'], '
$k
');"
;
}
}
}
}
//外键
if
(
$info
[
'constraints'
])
{
foreach
(
$info
[
'constraints'
]
as
$
k
=>
$
v
)
{
foreach
(
$info
[
'constraints'
]
as
$v
)
{
$t
=
"
\t\t\t\$
table->foreign('
{
$v
[
'column_name'
]
}
','
{
$v
[
'constraint_name'
]
}
')->references('
{
$v
[
'referenced_column_name'
]
}
')->on('
{
$v
[
'referenced_table_name'
]
}
')"
;
if
(
$v
[
'delete_rule'
])
{
$t
.=
"->onDelete('
{
$v
[
'delete_rule'
]
}
')"
;
...
...
@@ -1187,7 +1130,7 @@ class MakeModelCommand extends HyperfCommand
if
(
isset
(
$info
[
'table_comment'
])
&&
$info
[
'table_comment'
])
{
$tableComment
=
'Db::statement("alter table `'
.
$table
.
'` comment \''
.
$info
[
'table_comment'
]
.
'\'");'
;
}
$patterns
=
[
"%ClassName%"
,
'%table
n
ame%'
,
'%attributes%'
,
'%tableComment%'
];
$patterns
=
[
"%ClassName%"
,
'%table
N
ame%'
,
'%attributes%'
,
'%tableComment%'
];
$replacements
=
[
$className
,
$table
,
$attributes
,
$tableComment
];
$content
=
$this
->
buildField
(
$patterns
,
$replacements
,
$content
);
$this
->
writeToFile
(
$file
,
$content
);
...
...
@@ -1204,7 +1147,6 @@ class MakeModelCommand extends HyperfCommand
public
function
configure
()
{
//$this->call()
parent
::
configure
();
$this
->
addOption
(
'all'
,
'a'
,
InputOption
::
VALUE_NONE
,
'生成所有文件'
);
$this
->
addOption
(
'model'
,
'm'
,
InputOption
::
VALUE_NONE
,
'生成model文件'
);
...
...
src/Command/RepositoryCommand.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/11
* Time: 11:59
*/
namespace
Meibuyu\Micro\Command
;
use
Hyperf\Command\Annotation\Command
;
use
Hyperf\Command\Command
as
HyperfCommand
;
use
Meibuyu\Micro\Generator\FileAlreadyExistsException
;
use
Meibuyu\Micro\Generator\RepositoryEloquentGenerator
;
use
Symfony\Component\Console\Input\InputArgument
;
/**
* @Command()
*/
class
RepositoryCommand
extends
HyperfCommand
{
protected
$name
=
'gen:repository'
;
/**
* Handle the current command.
*/
public
function
handle
()
{
try
{
$name
=
$this
->
input
->
getArgument
(
'name'
);
$createValidator
=
$this
->
output
->
confirm
(
'同时创建验证器?'
,
true
);
(
new
RepositoryEloquentGenerator
([
'name'
=>
$name
,
'validator'
=>
$createValidator
,
]))
->
run
();
$this
->
info
(
"Repository created successfully."
);
}
catch
(
FileAlreadyExistsException
$e
)
{
$this
->
error
(
$e
->
getMessage
()
.
' already exists!'
);
}
}
public
function
getArguments
()
{
return
[[
'name'
,
InputArgument
::
REQUIRED
,
'名称'
]];
}
}
\ No newline at end of file
src/Command/ValidatorCommand.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: wangy
* Date: 2020/2/12
* Time: 10:49
*/
namespace
Meibuyu\Micro\Command
;
use
Hyperf\Command\Annotation\Command
;
use
Hyperf\Command\Command
as
HyperfCommand
;
use
Meibuyu\Micro\Generator\FileAlreadyExistsException
;
use
Meibuyu\Micro\Generator\ValidatorGenerator
;
use
Symfony\Component\Console\Input\InputArgument
;
/**
* @Command()
*/
class
ValidatorCommand
extends
HyperfCommand
{
protected
$name
=
'gen:validator'
;
/**
* Handle the current command.
*/
public
function
handle
()
{
try
{
$name
=
$this
->
input
->
getArgument
(
'name'
);
(
new
ValidatorGenerator
([
'name'
=>
$name
]))
->
run
();
$this
->
info
(
"Validator created successfully."
);
}
catch
(
FileAlreadyExistsException
$e
)
{
$this
->
error
(
$e
->
getMessage
()
.
' already exists!'
);
}
}
public
function
getArguments
()
{
return
[[
'name'
,
InputArgument
::
REQUIRED
,
'名称'
]];
}
}
\ No newline at end of file
src/Command/stubs/controller.stub
View file @
c9454cdf
...
...
@@ -21,6 +21,7 @@ use Meibuyu\Micro\Annotation\Perm;
*/
class
%
ModelClass
%
Controller
extends
AbstractController
{
/**
* @Inject()
* @var %ModelClass%Repository
...
...
src/Command/stubs/migration.stub
View file @
c9454cdf
...
...
@@ -7,20 +7,21 @@
* Description:
*/
use
Hyperf\Database\Schema\Schema
;
use
Hyperf\Database\Schema\Blueprint
;
use
Hyperf\Database\Migrations\Migration
;
use
Hyperf\Database\Schema\Blueprint
;
use
Hyperf\Database\Schema\Schema
;
use
Hyperf\DbConnection\Db
;
class
%
ClassName
%
extends
Migration
{
/**
* Run the migrations.
*/
public
function
up
()
:
void
{
Schema
::
disableForeignKeyConstraints
();
Schema
::
create
(
'%table
n
ame%'
,
function
(
Blueprint
$table
)
{
Schema
::
create
(
'%table
N
ame%'
,
function
(
Blueprint
$table
)
{
%
attributes
%
});
%
tableComment
%
...
...
@@ -33,7 +34,8 @@ class %ClassName% extends Migration
public
function
down
()
:
void
{
Schema
::
disableForeignKeyConstraints
();
Schema
::
dropIfExists
(
'%table
n
ame%'
);
Schema
::
dropIfExists
(
'%table
N
ame%'
);
Schema
::
enableForeignKeyConstraints
();
}
}
src/Command/stubs/repository.stub
View file @
c9454cdf
...
...
@@ -25,19 +25,11 @@ use Meibuyu\Micro\Repository\Eloquent\BaseRepository;
class
%
ModelClass
%
RepositoryEloquent
extends
BaseRepository
implements
%
ModelClass
%
Repository
{
/**
* %ModelClass% 模型
* @return mixed
*/
public
function
model
()
{
return
%
ModelClass
%::
class
;
}
/**
* 数据校验器
* @return mixed
*/
public
function
validator
()
{
return
%
ModelClass
%
Validator
::
class
;
...
...
@@ -47,7 +39,7 @@ class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelCla
* 获取数据列表
* @return array
*/
public
function
list
()
:
array
public
function
list
()
{
$pageSize
=
(
int
)
$this
->
request
->
input
(
'page_size'
,
DEFAULT_PAGE_SIZE
);
%
list
%
...
...
@@ -58,7 +50,7 @@ class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelCla
* @param $id
* @return array
*/
public
function
show
(
$id
)
:
array
public
function
show
(
$id
)
{
%
show
%
}
...
...
@@ -68,7 +60,7 @@ class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelCla
* @param array $attributes
* @return bool
*/
public
function
create
(
array
$attributes
)
:
bool
public
function
create
(
array
$attributes
)
{
Db
::
transaction
(
function
()
use
(
$attributes
)
{
%
create
%
...
...
@@ -82,7 +74,7 @@ class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelCla
* @param $id
* @return bool
*/
public
function
update
(
array
$attributes
,
$id
)
:
bool
public
function
update
(
array
$attributes
,
$id
)
{
Db
::
transaction
(
function
()
use
(
$attributes
,
$id
)
{
%
update
%
...
...
@@ -96,10 +88,9 @@ class %ModelClass%RepositoryEloquent extends BaseRepository implements %ModelCla
* @return bool
* @throws HttpResponseException
*/
public
function
delete
(
$id
)
:
bool
public
function
delete
(
$id
)
{
//已用外键做级联删除 和 删除验证,不需要做逻辑验证
return
$this
->
find
(
$id
)
->
delete
();
return
parent
::
delete
(
$id
);
// TODO: Change the autogenerated stub
}
%
rs
%
}
src/Command/stubs/repositoryInterface.stub
View file @
c9454cdf
...
...
@@ -14,7 +14,7 @@ namespace App\Repository\Interfaces;
use
Meibuyu\Micro\Repository\Contracts\RepositoryInterface
;
/**
* Interface
%ClassName%
* Interface %ClassName%
* @package App\Repository\Interfaces
*/
interface
%
ClassName
%
extends
RepositoryInterface
...
...
src/Command/stubs/validator.stub
View file @
c9454cdf
...
...
@@ -16,6 +16,7 @@ use Meibuyu\Micro\Validator\HyperfValidator;
class
%
ModelClass
%
Validator
extends
HyperfValidator
{
protected
$rules
=
[
ValidatorInterface
::
RULE_CREATE
=>
[
%
createRules
%
...
...
@@ -29,8 +30,4 @@ class %ModelClass%Validator extends HyperfValidator
%
attributes
%
];
protected
$messages
=
[
%
messages
%
];
}
src/ConfigProvider.php
View file @
c9454cdf
...
...
@@ -28,8 +28,6 @@ class ConfigProvider
\Hyperf\ServiceGovernance\Listener\RegisterServiceListener
::
class
=>
\Meibuyu\Micro\Listener\RegisterServiceListener
::
class
,
],
'commands'
=>
[
\Meibuyu\Micro\Command\RepositoryCommand
::
class
,
\Meibuyu\Micro\Command\ValidatorCommand
::
class
,
\Meibuyu\Micro\Command\MakeModelCommand
::
class
,
],
'annotations'
=>
[
...
...
@@ -39,14 +37,6 @@ class ConfigProvider
],
],
],
'publish'
=>
[
[
'id'
=>
'message'
,
'description'
=>
'message'
,
'source'
=>
__DIR__
.
'/../publish/message.php'
,
'destination'
=>
BASE_PATH
.
'/config/autoload/message.php'
,
],
],
];
}
}
src/Generator/FileAlreadyExistsException.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/11
* Time: 15:23
*/
namespace
Meibuyu\Micro\Generator
;
class
FileAlreadyExistsException
extends
\Exception
{
}
\ No newline at end of file
src/Generator/Generator.php
deleted
100644 → 0
View file @
80a40f66
<?php
declare
(
strict_types
=
1
);
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/11
* Time: 15:16
*/
namespace
Meibuyu\Micro\Generator
;
use
Hyperf\Utils\CodeGen\Project
;
use
Hyperf\Utils\Filesystem\Filesystem
;
use
Hyperf\Utils\Str
;
use
Meibuyu\Micro\Generator\Stubs\Stub
;
abstract
class
Generator
{
/**
* The filesystem instance.
*
* @var Filesystem
*/
protected
$filesystem
;
/**
* The array of options.
*
* @var array
*/
protected
$options
;
/**
* The shortname of stub.
*
* @var string
*/
protected
$stub
;
/**
* The class-specific output paths.
*
* @var string
*/
protected
$classPath
=
''
;
/**
* The file extension.
* @var string
*/
protected
$extension
=
''
;
protected
$_name
;
protected
$_namespace
;
/**
* Create new instance of this class.
*
* @param array $options
*/
public
function
__construct
(
array
$options
=
[])
{
$this
->
filesystem
=
new
Filesystem
;
$this
->
options
=
$options
;
$this
->
makeName
();
$this
->
makeNamespace
();
}
/**
* Make name.
*/
public
function
makeName
()
{
$name
=
$this
->
name
;
if
(
Str
::
contains
(
$this
->
name
,
'\\'
))
{
$name
=
str_replace
(
'\\'
,
'/'
,
$this
->
name
);
}
if
(
Str
::
contains
(
$this
->
name
,
'/'
))
{
$name
=
str_replace
(
'/'
,
'/'
,
$this
->
name
);
}
$this
->
_name
=
Str
::
studly
(
str_replace
(
' '
,
'/'
,
ucwords
(
str_replace
(
'/'
,
' '
,
$name
))));
}
/**
* Make namespace
*/
public
function
makeNamespace
()
{
$classNamespace
=
str_replace
(
'/'
,
'\\'
,
$this
->
classPath
);
$this
->
_namespace
=
'App\\'
.
$classNamespace
.
'\\'
;
}
/**
* Get extension.
*
* @return string
*/
public
function
getExtension
()
{
return
$this
->
extension
;
}
/**
* Run the generator.
*
* @return int
* @throws FileAlreadyExistsException
*/
public
function
run
()
{
$path
=
$this
->
getPath
();
if
(
$this
->
filesystem
->
exists
(
$path
))
{
throw
new
FileAlreadyExistsException
(
$path
);
}
if
(
!
$this
->
filesystem
->
isDirectory
(
$dir
=
dirname
(
$path
)))
{
$this
->
filesystem
->
makeDirectory
(
$dir
,
0777
,
true
,
true
);
}
return
$this
->
filesystem
->
put
(
$path
,
$this
->
getStub
());
}
/**
* Get destination path for generated file.
*
* @return string
*/
public
function
getPath
()
{
$project
=
new
Project
();
return
BASE_PATH
.
'/'
.
$project
->
path
(
$this
->
_namespace
.
$this
->
_name
.
$this
->
extension
);
}
/**
* Get stub template for generated file.
*
* @return string
*/
public
function
getStub
()
{
return
(
new
Stub
(
__DIR__
.
'/Stubs/'
.
$this
->
stub
.
'.stub'
,
$this
->
getReplacements
()))
->
render
();
}
/**
* Get template replacements.
*
* @return array
*/
public
function
getReplacements
()
{
return
[
'date'
=>
$this
->
getDate
(),
'time'
=>
$this
->
getTime
(),
'class'
=>
$this
->
getClass
(),
'namespace'
=>
$this
->
getNamespace
(),
];
}
public
function
getDate
()
{
return
date
(
'Y/m/d'
,
time
());
}
public
function
getTime
()
{
return
date
(
'h:i'
,
time
());
}
/**
* Get class name.
*
* @return string
*/
public
function
getClass
()
{
return
Str
::
studly
(
class_basename
(
$this
->
_name
));
}
/**
* Get class namespace.
*
* @return string
*/
public
function
getNamespace
()
{
$segments
=
explode
(
'/'
,
$this
->
_name
);
array_pop
(
$segments
);
return
'namespace '
.
rtrim
(
$this
->
_namespace
.
implode
(
$segments
,
'\\'
),
'\\'
)
.
';'
;
}
/**
* Get value from options by given key.
*
* @param string $key
* @param string|null $default
*
* @return string
*/
public
function
getOption
(
$key
,
$default
=
null
)
{
if
(
!
array_key_exists
(
$key
,
$this
->
options
))
{
return
$default
;
}
return
$this
->
options
[
$key
]
?:
$default
;
}
/**
* Helper method for "getOption".
*
* @param string $key
* @param string|null $default
*
* @return string
*/
public
function
option
(
$key
,
$default
=
null
)
{
return
$this
->
getOption
(
$key
,
$default
);
}
/**
* Handle call to __get method.
*
* @param string $key
*
* @return string|mixed
*/
public
function
__get
(
$key
)
{
if
(
property_exists
(
$this
,
$key
))
{
return
$this
->
{
$key
};
}
return
$this
->
option
(
$key
);
}
}
\ No newline at end of file
src/Generator/RepositoryEloquentGenerator.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: wangy
* Date: 2020/2/12
* Time: 9:15
*/
namespace
Meibuyu\Micro\Generator
;
class
RepositoryEloquentGenerator
extends
Generator
{
protected
$stub
=
'repository/eloquent'
;
protected
$classPath
=
'Repository/Eloquent'
;
protected
$extension
=
'RepositoryEloquent'
;
/**
* @return array
* @throws FileAlreadyExistsException
*/
public
function
getReplacements
()
{
return
array_merge
(
parent
::
getReplacements
(),
[
'interface'
=>
$this
->
getInterface
(),
'validator'
=>
$this
->
getValidator
(),
'validator_method'
=>
$this
->
getValidatorMethod
(),
]);
}
/**
* @return string
* @throws FileAlreadyExistsException
*/
public
function
getInterface
()
{
$interfaceGenerator
=
new
RepositoryInterfaceGenerator
([
'name'
=>
$this
->
name
]);
$interfaceNamespace
=
$interfaceGenerator
->
_namespace
.
$interfaceGenerator
->
_name
;
$interfaceGenerator
->
run
();
return
str_replace
([
"
\\
"
,
'/'
],
'\\'
,
$interfaceNamespace
)
.
$interfaceGenerator
->
getExtension
();
}
/**
* @return string
* @throws FileAlreadyExistsException
*/
public
function
getValidator
()
{
if
(
$this
->
validator
)
{
$validatorGenerator
=
new
ValidatorGenerator
([
'name'
=>
$this
->
name
]);
$validatorNamespace
=
$validatorGenerator
->
_namespace
.
$validatorGenerator
->
_name
;
$validatorGenerator
->
run
();
return
'use '
.
str_replace
([
"
\\
"
,
'/'
],
'\\'
,
$validatorNamespace
)
.
$validatorGenerator
->
getExtension
()
.
';'
;
}
else
{
return
''
;
}
}
public
function
getValidatorMethod
()
{
if
(
$this
->
validator
)
{
$class
=
$this
->
getClass
();
return
'public function validator()'
.
PHP_EOL
.
' {'
.
PHP_EOL
.
' return '
.
$class
.
'Validator::class;'
.
PHP_EOL
.
' }'
.
PHP_EOL
;
}
else
{
return
''
;
}
}
}
\ No newline at end of file
src/Generator/RepositoryInterfaceGenerator.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/11
* Time: 15:15
*/
namespace
Meibuyu\Micro\Generator
;
class
RepositoryInterfaceGenerator
extends
Generator
{
protected
$stub
=
'repository/interface'
;
protected
$classPath
=
'Repository/Interfaces'
;
protected
$extension
=
'Repository'
;
}
\ No newline at end of file
src/Generator/Stubs/Stub.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/11
* Time: 16:39
*/
namespace
Meibuyu\Micro\Generator\Stubs
;
class
Stub
{
/**
* The base path of stub file.
*
* @var null|string
*/
protected
static
$basePath
=
null
;
/**
* The stub path.
*
* @var string
*/
protected
$path
;
/**
* The replacements array.
*
* @var array
*/
protected
$replaces
=
[];
/**
* The contructor.
*
* @param string $path
* @param array $replaces
*/
public
function
__construct
(
$path
,
array
$replaces
=
[])
{
$this
->
path
=
$path
;
$this
->
replaces
=
$replaces
;
}
/**
* Create new self instance.
*
* @param string $path
* @param array $replaces
*
* @return self
*/
public
static
function
create
(
$path
,
array
$replaces
=
[])
{
return
new
static
(
$path
,
$replaces
);
}
/**
* Set base path.
*
* @param string $path
*
* @return void
*/
public
static
function
setBasePath
(
$path
)
{
static
::
$basePath
=
$path
;
}
/**
* Set replacements array.
*
* @param array $replaces
*
* @return $this
*/
public
function
replace
(
array
$replaces
=
[])
{
$this
->
replaces
=
$replaces
;
return
$this
;
}
/**
* Get replacements.
*
* @return array
*/
public
function
getReplaces
()
{
return
$this
->
replaces
;
}
/**
* Handle magic method __toString.
*
* @return string
*/
public
function
__toString
()
{
return
$this
->
render
();
}
/**
* Get stub contents.
*
* @return string
*/
public
function
render
()
{
return
$this
->
getContents
();
}
/**
* Get stub contents.
*
* @return mixed|string
*/
public
function
getContents
()
{
$contents
=
file_get_contents
(
$this
->
getPath
());
foreach
(
$this
->
replaces
as
$search
=>
$replace
)
{
$contents
=
str_replace
(
'$'
.
strtoupper
(
$search
)
.
'$'
,
$replace
,
$contents
);
}
return
$contents
;
}
/**
* Get stub path.
*
* @return string
*/
public
function
getPath
()
{
return
static
::
$basePath
.
$this
->
path
;
}
/**
* Set stub path.
*
* @param string $path
*
* @return self
*/
public
function
setPath
(
$path
)
{
$this
->
path
=
$path
;
return
$this
;
}
}
\ No newline at end of file
src/Generator/Stubs/repository/eloquent.stub
deleted
100644 → 0
View file @
80a40f66
<?php
declare
(
strict_types
=
1
);
/**
* Auto generated file.
* Date: $DATE$
* Time: $TIME$
*/
$NAMESPACE
$
use
Meibuyu\Micro\Repository\Eloquent\BaseRepository
;
use
$INTERFACE
$
;
$VALIDATOR
$
/**
* Class $CLASS$RepositoryEloquent.
*
* @package $NAMESPACE$
*/
class
$CLASS$RepositoryEloquent
extends
BaseRepository
implements
$CLASS$Repository
{
public
function
model
()
{
//
}
$VALIDATOR_METHOD
$
}
src/Generator/Stubs/repository/interface.stub
deleted
100644 → 0
View file @
80a40f66
<?php
declare
(
strict_types
=
1
);
/**
* Auto generated file.
* Date: $DATE$
* Time: $TIME$
*/
$NAMESPACE
$
use
Meibuyu\Micro\Repository\Contracts\RepositoryInterface
;
/**
* Interface $CLASS$Repository.
*
* @package $NAMESPACE$
*/
interface
$CLASS$Repository
extends
RepositoryInterface
{
//
}
src/Generator/Stubs/validator/validator.stub
deleted
100644 → 0
View file @
80a40f66
<?php
declare
(
strict_types
=
1
);
/**
* Auto generated file.
* Date: $DATE$
* Time: $TIME$
*/
$NAMESPACE
$
use
Meibuyu\Micro\Validator\Contracts\ValidatorInterface
;
use
Meibuyu\Micro\Validator\HyperfValidator
;
class
$CLASS$Validator
extends
HyperfValidator
{
protected
$rules
=
[
ValidatorInterface
::
RULE_CREATE
=>
[],
ValidatorInterface
::
RULE_UPDATE
=>
[],
];
}
src/Generator/ValidatorGenerator.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: wangy
* Date: 2020/2/12
* Time: 10:05
*/
namespace
Meibuyu\Micro\Generator
;
class
ValidatorGenerator
extends
Generator
{
protected
$stub
=
'validator/validator'
;
protected
$classPath
=
'Validators'
;
protected
$extension
=
'Validator'
;
}
\ No newline at end of file
src/Message/MessageCenter.php
deleted
100644 → 0
View file @
80a40f66
<?php
/**
* Created by PhpStorm.
* User: Zero
* Date: 2020/4/15
* Time: 9:19
*/
namespace
Meibuyu\Micro\Message
;
use
GuzzleHttp\Client
;
use
GuzzleHttp\HandlerStack
;
use
Hyperf\Contract\ConfigInterface
;
use
Hyperf\Guzzle\CoroutineHandler
;
use
Hyperf\Guzzle\HandlerStackFactory
;
class
MessageCenter
{
/**
* @var Client
*/
protected
$client
;
/**
* @var ConfigInterface
*/
private
$config
;
/**
* @var HandlerStackFactory
*/
protected
$stackFactory
;
public
function
__construct
(
ConfigInterface
$config
,
HandlerStackFactory
$stackFactory
)
{
$this
->
config
=
$config
;
$this
->
stackFactory
=
$stackFactory
;
$this
->
initClient
();
}
public
function
initClient
()
{
$options
=
[
'base_uri'
=>
$this
->
config
->
get
(
'message.center.domain'
)
.
'/api/'
,
'handler'
=>
HandlerStack
::
create
(
new
CoroutineHandler
()),
'timeout'
=>
60
,
];
$proxy
=
$this
->
config
->
get
(
'message.center.proxy'
);
if
(
$proxy
)
{
$options
=
array_merge
(
$options
,
[
'proxy'
=>
$proxy
,
'swoole'
=>
[
'http_proxy_port'
=>
$this
->
config
->
get
(
'message.center.proxy_port'
),
]
]);
}
$this
->
client
=
make
(
Client
::
class
,
[
'config'
=>
$options
]);
}
public
function
request
(
$type
,
$uri
,
$data
=
[])
{
return
$this
->
client
->
request
(
$type
,
$uri
,
[
'body'
=>
json_encode
(
$data
),
'headers'
=>
[
'content-type'
=>
'application/json'
]
]);
}
public
function
syncDingUser
()
{
$response
=
$this
->
client
->
request
(
'GET'
,
'synchronizationDingUser'
);
return
json_decode
(
$response
->
getBody
()
->
getContents
(),
true
);
}
public
function
sendDing
(
$userId
,
$message
)
{
$response
=
$this
->
client
->
request
(
'POST'
,
'sendDing'
,
[
'body'
=>
json_encode
([
'userId'
=>
$userId
,
'message'
=>
$message
]),
'headers'
=>
[
'content-type'
=>
'application/json'
]
]);
return
json_decode
(
$response
->
getBody
()
->
getContents
(),
true
);
}
}
\ No newline at end of file
src/functions.php
View file @
c9454cdf
...
...
@@ -442,7 +442,7 @@ if (!function_exists('putLog')) {
* @return void
* @throws
*/
function
put_log
(
$output
=
'out-mes'
,
$filename
=
''
,
$dir
=
BASE_PATH
.
'/runtime/dev/'
)
function
put_log
(
$output
=
'out-mes'
,
$filename
=
''
,
$dir
=
BASE_PATH
.
'/runtime/
logs/
dev/'
)
{
!
is_dir
(
$dir
)
&&
!
mkdir
(
$dir
,
0777
,
true
);
// 创建一个 Channel,参数 log 即为 Channel 的名字
...
...
@@ -523,7 +523,7 @@ if (!function_exists('get_collection_values')) {
$values
[]
=
$value
;
}
}
else
{
if
(
is_array
(
$value
)
||
is_countable
(
$collection
[
$t
]
))
{
if
(
is_array
(
$value
)
||
is_countable
(
$collection
))
{
foreach
(
$value
as
$vv
)
{
if
(
isset
(
$vv
[
$ik
]))
{
$values
[]
=
$vv
[
$ik
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment