初始化-安装依赖

This commit is contained in:
2026-03-03 10:06:12 +08:00
parent 3f349a35a4
commit ec8cac4221
187 changed files with 26292 additions and 0 deletions

View 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;
}
}