初始化-安装依赖
This commit is contained in:
254
server/plugin/saiadmin/utils/Helper.php
Normal file
254
server/plugin/saiadmin/utils/Helper.php
Normal file
@@ -0,0 +1,254 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | saiadmin [ saiadmin快速开发框架 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: sai <1430792918@qq.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace plugin\saiadmin\utils;
|
||||
|
||||
/**
|
||||
* 帮助类
|
||||
*/
|
||||
class Helper
|
||||
{
|
||||
/**
|
||||
* 数据树形化
|
||||
* @param array $data 数据
|
||||
* @param string $childrenname 子数据名
|
||||
* @param string $keyName 数据key名
|
||||
* @param string $pidName 数据上级key名
|
||||
* @return array
|
||||
*/
|
||||
public static function makeTree(array $data, string $childrenname = 'children', string $keyName = 'id', string $pidName = 'parent_id')
|
||||
{
|
||||
$list = [];
|
||||
foreach ($data as $value) {
|
||||
$list[$value[$keyName]] = $value;
|
||||
}
|
||||
$tree = []; //格式化好的树
|
||||
foreach ($list as $item) {
|
||||
if (isset($list[$item[$pidName]])) {
|
||||
$list[$item[$pidName]][$childrenname][] = &$list[$item[$keyName]];
|
||||
} else {
|
||||
$tree[] = &$list[$item[$keyName]];
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成Arco菜单
|
||||
* @param array $data 数据
|
||||
* @param string $childrenname 子数据名
|
||||
* @param string $keyName 数据key名
|
||||
* @param string $pidName 数据上级key名
|
||||
* @return array
|
||||
*/
|
||||
public static function makeArcoMenus(array $data, string $childrenname = 'children', string $keyName = 'id', string $pidName = 'parent_id')
|
||||
{
|
||||
$list = [];
|
||||
foreach ($data as $value) {
|
||||
if ($value['type'] === 'M'){
|
||||
$path = '/'.$value['route'];
|
||||
$layout = isset($value['is_layout']) ? $value['is_layout'] : 1;
|
||||
$temp = [
|
||||
$keyName => $value[$keyName],
|
||||
$pidName => $value[$pidName],
|
||||
'name' => $value['route'],
|
||||
'path' => $path,
|
||||
'component' => $value['component'],
|
||||
'redirect' => $value['redirect'],
|
||||
'meta' => [
|
||||
'title' => $value['name'],
|
||||
'type' => $value['type'],
|
||||
'hidden' => $value['is_hidden'] === 1,
|
||||
'layout' => $layout === 1,
|
||||
'hiddenBreadcrumb' => false,
|
||||
'icon' => $value['icon'],
|
||||
],
|
||||
];
|
||||
$list[$value[$keyName]] = $temp;
|
||||
}
|
||||
if ($value['type'] === 'I' || $value['type'] === 'L'){
|
||||
$temp = [
|
||||
$keyName => $value[$keyName],
|
||||
$pidName => $value[$pidName],
|
||||
'name' => $value['code'],
|
||||
'path' => $value['route'],
|
||||
'meta' => [
|
||||
'title' => $value['name'],
|
||||
'type' => $value['type'],
|
||||
'hidden' => $value['is_hidden'] === 1,
|
||||
'hiddenBreadcrumb' => false,
|
||||
'icon' => $value['icon'],
|
||||
],
|
||||
];
|
||||
$list[$value[$keyName]] = $temp;
|
||||
}
|
||||
}
|
||||
$tree = []; //格式化好的树
|
||||
foreach ($list as $item) {
|
||||
if (isset($list[$item[$pidName]])) {
|
||||
$list[$item[$pidName]][$childrenname][] = &$list[$item[$keyName]];
|
||||
} else {
|
||||
$tree[] = &$list[$item[$keyName]];
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成Artd菜单
|
||||
* @param array $data
|
||||
* @param string $childrenname
|
||||
* @param string $keyName
|
||||
* @param string $pidName
|
||||
* @return array
|
||||
*/
|
||||
public static function makeArtdMenus(array $data, string $childrenname = 'children', string $keyName = 'id', string $pidName = 'parent_id')
|
||||
{
|
||||
$list = [];
|
||||
foreach ($data as $value) {
|
||||
$component = '';
|
||||
if ($value['type'] === 1) {
|
||||
$component = '/index/index';
|
||||
}
|
||||
if ($value['type'] === 2) {
|
||||
$component = $value['component'];
|
||||
}
|
||||
$temp = [
|
||||
$keyName => $value[$keyName],
|
||||
$pidName => $value[$pidName],
|
||||
'name' => $value['code'],
|
||||
'path' => $value['path'],
|
||||
'component' => $component,
|
||||
'meta' => [
|
||||
'title' => $value['name'],
|
||||
'icon' => $value['icon'],
|
||||
'isIframe' => $value['is_iframe'] === 1,
|
||||
'keepAlive' => $value['is_keep_alive'] === 1,
|
||||
'isHide' => $value['is_hidden'] === 1,
|
||||
'fixedTab' => $value['is_fixed_tab'] === 1,
|
||||
'isFullPage' => $value['is_full_page'] === 1,
|
||||
],
|
||||
];
|
||||
if ($value['type'] === 4) {
|
||||
$temp['path'] = '/outside/Iframe';
|
||||
$temp['meta']['link'] = $value['link_url'];
|
||||
}
|
||||
$list[$value[$keyName]] = $temp;
|
||||
}
|
||||
$tree = [];
|
||||
foreach ($list as $item) {
|
||||
if (isset($list[$item[$pidName]])) {
|
||||
$list[$item[$pidName]][$childrenname][] = &$list[$item[$keyName]];
|
||||
} else {
|
||||
$tree[] = &$list[$item[$keyName]];
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 下划线转驼峰
|
||||
*/
|
||||
public static function camelize($uncamelized_words,$separator='_')
|
||||
{
|
||||
$uncamelized_words = $separator. str_replace($separator, " ", strtolower($uncamelized_words));
|
||||
return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator );
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名转下划线命名
|
||||
*/
|
||||
public static function uncamelize($camelCaps,$separator='_')
|
||||
{
|
||||
return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为驼峰
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
public static function camel(string $value): string
|
||||
{
|
||||
static $cache = [];
|
||||
$key = $value;
|
||||
|
||||
if (isset($cache[$key])) {
|
||||
return $cache[$key];
|
||||
}
|
||||
|
||||
$value = ucwords(str_replace(['-', '_'], ' ', $value));
|
||||
|
||||
return $cache[$key] = str_replace(' ', '', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取业务名称
|
||||
* @param string $tableName
|
||||
* @return mixed
|
||||
*/
|
||||
public static function get_business(string $tableName)
|
||||
{
|
||||
$start = strrpos($tableName,'_');
|
||||
if ($start !== false) {
|
||||
$result = substr($tableName, $start + 1);
|
||||
} else {
|
||||
$result = $tableName;
|
||||
}
|
||||
return static::camelize($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取业务名称
|
||||
* @param string $tableName
|
||||
* @return mixed
|
||||
*/
|
||||
public static function get_big_business(string $tableName)
|
||||
{
|
||||
$start = strrpos($tableName,'_');
|
||||
$result = substr($tableName, $start + 1);
|
||||
return static::camel($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 只替换一次字符串
|
||||
* @param $needle
|
||||
* @param $replace
|
||||
* @param $haystack
|
||||
* @return array|mixed|string|string[]
|
||||
*/
|
||||
public static function str_replace_once($needle, $replace, $haystack)
|
||||
{
|
||||
$pos = strpos($haystack, $needle);
|
||||
if ($pos === false) {
|
||||
return $haystack;
|
||||
}
|
||||
return substr_replace($haystack, $replace, $pos, strlen($needle));
|
||||
}
|
||||
|
||||
/**
|
||||
* 遍历目录
|
||||
* @param $template_name
|
||||
* @return array
|
||||
*/
|
||||
public static function get_dir($template_name)
|
||||
{
|
||||
$dir = base_path($template_name);
|
||||
$fileDir = [];
|
||||
if (is_dir($dir)){
|
||||
if ($dh = opendir($dir)){
|
||||
while (($file = readdir($dh)) !== false){
|
||||
if($file != "." && $file != ".."){
|
||||
array_push($fileDir, $file);
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
return $fileDir;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user