houde_web_api/app/admin/controller/Gen/GenApi/GenController/Admin.php
2023-05-08 00:05:55 +08:00

125 lines
4.2 KiB
PHP

<?php
namespace app\admin\controller\Gen\GenApi\GenController;
use app\admin\controller\Gen\GenApi\GenApi;
use app\common\exception\Tool;
/**
* 后端后台接口生成类
*/
class Admin extends GenApi
{
/**
* 生成后台控制器
*/
public function createAdminController(): void
{
//创建后台控制器层模块目录
self::createModuleMkdir($this->admin_con_module_path);
//模板文件字符串替换
$temp_str = Tool::strReplacePlus(
self::getTempStr($this->admin_con_temp_path),
[
//实体类名
'{$className}' => $this->class_name,
//模块名
'{$moduleName}' => $this->module_name,
//业务名
'{$businessName}' => $this->business_name,
//方法名
'{$functionName}' => $this->function_name,
//查询列表显示字段
'{$queryFields}' => self::toFormTempStr($this->query_list_fields),
//排序字段
'{$orderField}' => $this->sort_field,
//排序类型
'{$orderMode}' => $this->sort_type,
//新增允许字段
'{$addAllowFields}' => $this->add_fields_temp,
//编辑允许字段
'{$editAllowFields}' => $this->edit_fields_temp,
//列表查询条件
'{$whereContent}' => $this->query_list_where_temp,
//导出接口
'{$exportExcelContent}' => $this->buildExportExcelApiTemp(),
//导入接口
'{$importExcelContent}' => $this->buildImportExcelApiTemp(),
//下载模板接口
'{$downloadTempContent}' => $this->buildDownloadTemplateApiTemp(),
//编辑必填验证
'{$editRequireFields}' => $this->edit_required_verify_temp,
//新增必填验证
'{$addRequireFields}' => $this->add_required_verify_temp,
]
);
//文件写入
self::writeFile($this->admin_con_path, $temp_str);
}
/**
* 构建Excel导出接口模板字符串
*/
private function buildExportExcelApiTemp(): string
{
if (!$this->is_export) return '';
//提取业务字段名称(模板字符串)
$business_fields = [];
foreach ($this->business_fields as $key => $value) {
$business_fields[] = $key;
};
$business_fields_temp = self::toFormTempStr($business_fields);
//模板字符串构建并返回
return "/**\n* 导出Excel\n*/
public function exportExcel(Request \$request):void
{
\$params = \$request->param();
\$select = Model{$this->class_name}::field({$business_fields_temp})
->order('{$this->sort_field}', '{$this->sort_type}' )
->select()->toArray();
Model{$this->class_name}::exportExcel(\$select);
}";
}
/**
* 构建Excel导入接口模板字符串
*/
private function buildImportExcelApiTemp(): string
{
if (!$this->is_import) return '';
//模板字符串构建并返回
return "/**\n* 导入excel\n*/
public function importExcel(Request \$request):array
{
\$file = new UploadFile('uploads', 'fileExt:xlsx');
\$file->putFile('{$this->business_name}');
\$msg = Model{$this->class_name}::importExcel(\$file);
return [
'code' => 0,
'msg' => \$msg
];
}";
}
/**
* 构建Excel下载模板接口模板字符串
*/
private function buildDownloadTemplateApiTemp(): string
{
if (!$this->is_import) return '';
//模板字符串构建并返回
return "/**\n* 下载导入模板\n*/
public function downloadTemplate(Request \$request):void
{
\$params = \$request->param();
\$data = array_values(Model{$this->class_name}::EXCELFIELD);
\$excel = (new Excel())->exporTsheet(\$data);
\$excel->save('{$this->function_name}导入模板.xlsx');
}";
}
}