fix:后端代码生成重构完成
This commit is contained in:
parent
71caf80d45
commit
ae37a77649
@ -8,7 +8,9 @@ use app\Request;
|
|||||||
use app\exception\ErrorMsg;
|
use app\exception\ErrorMsg;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
use app\common\exception\Tool;
|
use app\common\exception\Tool;
|
||||||
use app\admin\controller\Gen\GenApi\GenModel\Model;
|
use app\admin\controller\Gen\GenApi\GenModel\Model as GenModel;
|
||||||
|
use app\admin\controller\Gen\GenApi\GenController\Admin as GenAdminController;
|
||||||
|
use app\admin\controller\Gen\GenApi\GenController\Api as GenApiController;
|
||||||
|
|
||||||
class Gen extends BaseController
|
class Gen extends BaseController
|
||||||
{
|
{
|
||||||
@ -343,14 +345,12 @@ class Gen extends BaseController
|
|||||||
// return $table;
|
// return $table;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
(new GenModel($columns, $table))->createNewModel();
|
||||||
|
(new GenAdminController($columns, $table))->createAdminController();
|
||||||
if ($table['tplCategory'] == "web_static") {
|
if ($table['tplCategory'] == "web_static") {
|
||||||
$this->createAdminController($columns, $table);
|
|
||||||
(new Model($columns, $table))->createNewModel();
|
|
||||||
$this->createJsWebStaticIndex($columns, $table);
|
$this->createJsWebStaticIndex($columns, $table);
|
||||||
$this->createJsApi($columns, $table);
|
$this->createJsApi($columns, $table);
|
||||||
} else if ($table['tplCategory'] == "crud") {
|
} else if ($table['tplCategory'] == "crud") {
|
||||||
$this->createAdminController($columns, $table);
|
|
||||||
(new Model($columns, $table))->createNewModel();
|
|
||||||
$this->createJsVue($columns, $table);
|
$this->createJsVue($columns, $table);
|
||||||
$this->createJsAdd($columns, $table);
|
$this->createJsAdd($columns, $table);
|
||||||
$this->createJsEdit($columns, $table);
|
$this->createJsEdit($columns, $table);
|
||||||
@ -393,7 +393,7 @@ class Gen extends BaseController
|
|||||||
$columns[$key]['isInit'] = $this->intToBool($value['isInit']);
|
$columns[$key]['isInit'] = $this->intToBool($value['isInit']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->createApiController($columns, $table, 2);
|
(new GenApiController($columns, $table))->createApiController();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'code' => 200,
|
'code' => 200,
|
||||||
|
@ -9,12 +9,6 @@ use app\admin\controller\Gen\Gen;
|
|||||||
*/
|
*/
|
||||||
class GenApi
|
class GenApi
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* 模型层模板文件字符串
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $model_temp;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目根目录路径
|
* 项目根目录路径
|
||||||
* @var string
|
* @var string
|
||||||
@ -57,6 +51,23 @@ class GenApi
|
|||||||
*/
|
*/
|
||||||
protected $function_name;
|
protected $function_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后端生成模板文件路径配置
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected const TEMP_PATH_CONFIG = [
|
||||||
|
'crud' => [
|
||||||
|
'api' => 'resources/view/api/controller.tpl',
|
||||||
|
'admin' => 'resources/view/admin/controller.tpl',
|
||||||
|
'model' => 'resources/view/admin/model.tpl',
|
||||||
|
],
|
||||||
|
'web_static' => [
|
||||||
|
'api' => 'resources/view/business/webApiController.tpl',
|
||||||
|
'admin' => 'resources/view/business/webController.tpl',
|
||||||
|
'model' => 'resources/view/admin/model.tpl',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模型层模板读取路径
|
* 模型层模板读取路径
|
||||||
* @var string
|
* @var string
|
||||||
@ -75,36 +86,84 @@ class GenApi
|
|||||||
*/
|
*/
|
||||||
protected $model_path;
|
protected $model_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台控制器模板读取路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $admin_con_temp_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台控制器模块生成路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $admin_con_module_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台控制器生成路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $admin_con_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前台控制器模板读取路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $api_con_temp_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前台控制器生成路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $api_con_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前台控制器模块生成路径
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $api_con_module_path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增功能必要字段
|
* 新增功能必要字段
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $add_required_fields = ['guid', 'create_user_guid', 'update_user_guid'];
|
protected $add_required_fields = ['guid', 'create_user_guid', 'update_user_guid'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增允许字段模板字符串
|
||||||
|
* @var string 例:['user_name','user_id',...]
|
||||||
|
*/
|
||||||
|
protected $add_fields_temp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增必填验证模板字符串
|
||||||
|
* @var string 例: ['user_name|用户名称' => 'require',...]
|
||||||
|
*/
|
||||||
|
protected $add_required_verify_temp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改功能必要字段
|
* 修改功能必要字段
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $edit_required_fields = ['update_user_guid'];
|
protected $edit_required_fields = ['update_user_guid'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑允许字段模板字符串
|
||||||
|
* @var string 例:['user_name','user_id',...]
|
||||||
|
*/
|
||||||
|
protected $edit_fields_temp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑必填验证模板字符串
|
||||||
|
* @var string 例: ['user_name|用户名称' => 'require',...]
|
||||||
|
*/
|
||||||
|
protected $edit_required_verify_temp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 业务字段
|
* 业务字段
|
||||||
* @var array 例:[ 'user_name' => '用户名称',...]
|
* @var array 例:[ 'user_name' => '用户名称',...]
|
||||||
*/
|
*/
|
||||||
protected $business_fields = [];
|
protected $business_fields = [];
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增允许字段模板字符
|
|
||||||
* @var string 例:['user_name','user_id',...]
|
|
||||||
*/
|
|
||||||
protected $add_fields_temp;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 编辑允许字段模板字符
|
|
||||||
* @var string 例:['user_name','user_id',...]
|
|
||||||
*/
|
|
||||||
protected $edit_fields_temp;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否导入
|
* 是否导入
|
||||||
* @var bool
|
* @var bool
|
||||||
@ -123,6 +182,36 @@ class GenApi
|
|||||||
*/
|
*/
|
||||||
protected $img_fields = [];
|
protected $img_fields = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成后端模板类型
|
||||||
|
* @var string crud:: 单表(增删改查) | web_static: 门户静态模块(查询修改)
|
||||||
|
*/
|
||||||
|
protected $gen_api_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表显示字段
|
||||||
|
* @var array 例:['user_name','user_id',...]
|
||||||
|
*/
|
||||||
|
protected $query_list_fields = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序字段
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $sort_field;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序类型
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $sort_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表条件模板字符串
|
||||||
|
* @var string 例子:Tool::getOptionalQuery(['user_name', 'LIKE'])
|
||||||
|
*/
|
||||||
|
protected $query_list_where_temp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造器
|
* 构造器
|
||||||
*
|
*
|
||||||
@ -131,6 +220,7 @@ class GenApi
|
|||||||
*/
|
*/
|
||||||
public function __construct(array $fields, array $table)
|
public function __construct(array $fields, array $table)
|
||||||
{
|
{
|
||||||
|
//基本参数初始化
|
||||||
$this->root = base_path();
|
$this->root = base_path();
|
||||||
$this->fields = $fields;
|
$this->fields = $fields;
|
||||||
$this->table = $table;
|
$this->table = $table;
|
||||||
@ -138,11 +228,7 @@ class GenApi
|
|||||||
$this->module_name = $this->table['moduleName'];
|
$this->module_name = $this->table['moduleName'];
|
||||||
$this->business_name = $this->table['businessName'];
|
$this->business_name = $this->table['businessName'];
|
||||||
$this->function_name = $this->table['functionName'];
|
$this->function_name = $this->table['functionName'];
|
||||||
$this->model_temp_path = self::initFilePath("{$this->root}resources/view/admin/model.tpl");
|
//后端生成通用数据初始化
|
||||||
$this->model_temp = self::getTempStr($this->model_temp_path);
|
|
||||||
$this->model_module_path = self::initFilePath("{$this->root}common/model/{$this->module_name}");
|
|
||||||
$this->model_path = self::initFilePath("{$this->model_module_path}/{$this->class_name}.php");
|
|
||||||
$this->mkdirModelModule();
|
|
||||||
$this->initBusinessFields();
|
$this->initBusinessFields();
|
||||||
$this->initRequiredFields('add_required_fields');
|
$this->initRequiredFields('add_required_fields');
|
||||||
$this->initRequiredFields('edit_required_fields');
|
$this->initRequiredFields('edit_required_fields');
|
||||||
@ -150,6 +236,98 @@ class GenApi
|
|||||||
$this->initImgFields();
|
$this->initImgFields();
|
||||||
$this->buildAddFieldsTemp();
|
$this->buildAddFieldsTemp();
|
||||||
$this->buildEditFieldsTemp();
|
$this->buildEditFieldsTemp();
|
||||||
|
$this->initGenApiType();
|
||||||
|
$this->initQueryListDisplayFields();
|
||||||
|
$this->initSortInfo();
|
||||||
|
$this->initRequiredVerifyFieldsTemp();
|
||||||
|
$this->buildQueryWhereContentTemp();
|
||||||
|
//后端生成所需路径初始化
|
||||||
|
$this->initModelGenPath();
|
||||||
|
$this->initAdminControllerGenPath();
|
||||||
|
$this->initApiControllerGenPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建查询列表条件模板字符串
|
||||||
|
*/
|
||||||
|
public function buildQueryWhereContentTemp(): void
|
||||||
|
{
|
||||||
|
$where_content_arr = [];
|
||||||
|
foreach ($this->fields as $val) {
|
||||||
|
if ($val['isQuery']) {
|
||||||
|
$where_content_arr[] = [$val['columnName'], $val['queryType']];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$this->query_list_where_temp = self::toFormTempStr($where_content_arr, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化排序信息
|
||||||
|
*/
|
||||||
|
private function initSortInfo(): void
|
||||||
|
{
|
||||||
|
$this->sort_field = $this->table['options']->SortField ?? "{$this->business_name}_update_time";
|
||||||
|
$this->sort_type = $this->table['options']->SortType ?? 'desc';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化查询列表可显字段
|
||||||
|
*/
|
||||||
|
private function initQueryListDisplayFields(): void
|
||||||
|
{
|
||||||
|
foreach ($this->fields as $val) {
|
||||||
|
if ($val['isList']) {
|
||||||
|
$this->query_list_fields[] = $val['columnName'];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化后端模板类型
|
||||||
|
*/
|
||||||
|
private function initGenApiType(): void
|
||||||
|
{
|
||||||
|
$this->gen_api_type = $this->table['tplCategory'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化模型层生成所需路径
|
||||||
|
*/
|
||||||
|
private function initModelGenPath(): void
|
||||||
|
{
|
||||||
|
$this->model_temp_path = self::initFilePath($this->getTempPath('model'));
|
||||||
|
$this->model_module_path = self::initFilePath("{$this->root}common/model/{$this->module_name}");
|
||||||
|
$this->model_path = self::initFilePath("{$this->model_module_path}/{$this->class_name}.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化后台控制器生成所需路径
|
||||||
|
*/
|
||||||
|
private function initAdminControllerGenPath(): void
|
||||||
|
{
|
||||||
|
$this->admin_con_temp_path = self::initFilePath($this->getTempPath('admin'));
|
||||||
|
$this->admin_con_module_path = self::initFilePath("{$this->root}admin/controller/{$this->module_name}");
|
||||||
|
$this->admin_con_path = self::initFilePath("{$this->admin_con_module_path}/{$this->class_name}.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化前台控制器生成所需路径
|
||||||
|
*/
|
||||||
|
private function initApiControllerGenPath(): void
|
||||||
|
{
|
||||||
|
$this->api_con_temp_path = self::initFilePath($this->getTempPath('api'));
|
||||||
|
$this->api_con_module_path = self::initFilePath("{$this->root}api/controller/{$this->module_name}");
|
||||||
|
$this->api_con_path = self::initFilePath("{$this->api_con_module_path}/{$this->class_name}.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取生成模板文件路径
|
||||||
|
*
|
||||||
|
* @param string $type 生成模板文件类型 admin:后台控制器 | api:前台控制器 | model:模型层
|
||||||
|
*/
|
||||||
|
private function getTempPath(string $type): string
|
||||||
|
{
|
||||||
|
return $this->root . self::TEMP_PATH_CONFIG[$this->gen_api_type][$type];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,12 +359,7 @@ class GenApi
|
|||||||
private function buildAddFieldsTemp(): void
|
private function buildAddFieldsTemp(): void
|
||||||
{
|
{
|
||||||
$field_arr = array_merge(array_keys($this->business_fields), $this->add_required_fields);
|
$field_arr = array_merge(array_keys($this->business_fields), $this->add_required_fields);
|
||||||
|
$this->add_fields_temp = self::toFormTempStr($field_arr);
|
||||||
foreach ($field_arr as $val) {
|
|
||||||
$this->add_fields_temp .= "'{$val}',";
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->add_fields_temp = "[{$this->add_fields_temp}]";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -195,12 +368,31 @@ class GenApi
|
|||||||
private function buildEditFieldsTemp(): void
|
private function buildEditFieldsTemp(): void
|
||||||
{
|
{
|
||||||
$field_arr = array_merge(array_keys($this->business_fields), $this->edit_required_fields);
|
$field_arr = array_merge(array_keys($this->business_fields), $this->edit_required_fields);
|
||||||
|
$this->edit_fields_temp = self::toFormTempStr($field_arr);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($field_arr as $val) {
|
/**
|
||||||
$this->edit_fields_temp .= "'{$val}',";
|
* 初始化功能必填验证模板字符
|
||||||
}
|
*/
|
||||||
|
private function initRequiredVerifyFieldsTemp(): void
|
||||||
$this->edit_fields_temp = "[{$this->edit_fields_temp}]";
|
{
|
||||||
|
$edit_require_fields = [];
|
||||||
|
$add_require_fields = [];
|
||||||
|
foreach ($this->fields as $val) {
|
||||||
|
$column_name = $val['columnName'];
|
||||||
|
if ($val['isEdit']) {
|
||||||
|
if ($val['isRequired']) {
|
||||||
|
$edit_require_fields[] = $column_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($val['isInsert']) {
|
||||||
|
if ($val['isRequired']) {
|
||||||
|
$add_require_fields[] = $column_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$this->edit_required_verify_temp = self::toFormTempStr($edit_require_fields, 2);
|
||||||
|
$this->add_required_verify_temp = self::toFormTempStr($add_require_fields, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -216,11 +408,13 @@ class GenApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成模型层模块文件夹
|
* 生成模块文件夹
|
||||||
|
*
|
||||||
|
* @param string $path 模块文件夹路径
|
||||||
*/
|
*/
|
||||||
private function mkdirModelModule()
|
protected function createModuleMkdir(string $module_path): void
|
||||||
{
|
{
|
||||||
self::mkdir($this->model_module_path);
|
self::mkdir($module_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -294,4 +488,4 @@ class GenApi
|
|||||||
{
|
{
|
||||||
return (new Gen(new \think\App()))->toFormTempStr($arr, $this->business_fields, $type);
|
return (new Gen(new \think\App()))->toFormTempStr($arr, $this->business_fields, $type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,4 +10,115 @@ use app\common\exception\Tool;
|
|||||||
*/
|
*/
|
||||||
class Admin extends GenApi
|
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');
|
||||||
|
}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,4 +10,40 @@ use app\common\exception\Tool;
|
|||||||
*/
|
*/
|
||||||
class Api extends GenApi
|
class Api extends GenApi
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* 生成前台控制器
|
||||||
|
*/
|
||||||
|
public function createApiController(): void
|
||||||
|
{
|
||||||
|
//创建前台控制器层模块目录
|
||||||
|
self::createModuleMkdir($this->api_con_module_path);
|
||||||
|
//模板文件字符串替换
|
||||||
|
$temp_str = Tool::strReplacePlus(
|
||||||
|
self::getTempStr($this->api_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,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
//文件写入
|
||||||
|
self::writeFile($this->api_con_path, $temp_str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,38 +8,43 @@ use app\common\exception\Tool;
|
|||||||
/**
|
/**
|
||||||
* 后端模型层生成类
|
* 后端模型层生成类
|
||||||
*/
|
*/
|
||||||
class Model extends GenApi
|
class Model extends GenApi
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 生成模型层
|
* 生成模型层
|
||||||
*/
|
*/
|
||||||
public function createNewModel(): void
|
public function createNewModel(): void
|
||||||
{
|
{
|
||||||
|
//创建模型层模块目录
|
||||||
|
self::createModuleMkdir($this->model_module_path);
|
||||||
//模板文件字符串替换
|
//模板文件字符串替换
|
||||||
$temp_str = Tool::strReplacePlus($this->model_temp, [
|
$temp_str = Tool::strReplacePlus(
|
||||||
//实体类名
|
self::getTempStr($this->model_temp_path),
|
||||||
'{$className}' => $this->class_name,
|
[
|
||||||
//模块名
|
//实体类名
|
||||||
'{$moduleName}' => $this->module_name,
|
'{$className}' => $this->class_name,
|
||||||
//业务名
|
//模块名
|
||||||
'{$businessName}' => $this->business_name,
|
'{$moduleName}' => $this->module_name,
|
||||||
//模型层字段信息
|
//业务名
|
||||||
'{$fields}' => $this->buildFieldsInfoTemp(),
|
'{$businessName}' => $this->business_name,
|
||||||
//模型层导出Excel方法
|
//模型层字段信息
|
||||||
'{$exportExcelContent}' => $this->buildExportFun(),
|
'{$fields}' => $this->buildFieldsInfoTemp(),
|
||||||
//模型层导入/下载模板Excel表头
|
//模型层导出Excel方法
|
||||||
'{$importExcelField}' => $this->buildImportDownloadFieldsTemp(),
|
'{$exportExcelContent}' => $this->buildExportFun(),
|
||||||
//模型层导入Excel方法
|
//模型层导入/下载模板Excel表头
|
||||||
'{$importExcelContent}' => $this->buildImportFunTemp(),
|
'{$importExcelField}' => $this->buildImportDownloadFieldsTemp(),
|
||||||
//模型层导入Excel初始化方法
|
//模型层导入Excel方法
|
||||||
'{$importExcelInitContent}' => $this->buildImportInitFunTemp(),
|
'{$importExcelContent}' => $this->buildImportFunTemp(),
|
||||||
]);
|
//模型层导入Excel初始化方法
|
||||||
|
'{$importExcelInitContent}' => $this->buildImportInitFunTemp(),
|
||||||
|
]
|
||||||
|
);
|
||||||
//文件写入
|
//文件写入
|
||||||
self::writeFile($this->model_path,$temp_str);
|
self::writeFile($this->model_path, $temp_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建模型层字段信息模板字符
|
* 构建模型层字段信息模板字符串
|
||||||
*/
|
*/
|
||||||
public function buildFieldsInfoTemp(): string
|
public function buildFieldsInfoTemp(): string
|
||||||
{
|
{
|
||||||
@ -51,13 +56,13 @@ use app\common\exception\Tool;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建模型层导出方法模板字符
|
* 构建模型层导出方法模板字符串
|
||||||
*/
|
*/
|
||||||
private function buildExportFun(): string
|
private function buildExportFun(): string
|
||||||
{
|
{
|
||||||
if (!$this->is_export) return '';
|
if (!$this->is_export) return '';
|
||||||
|
|
||||||
//excel表头字符构建
|
//excel表头字符串构建
|
||||||
$excel_header = [];
|
$excel_header = [];
|
||||||
foreach ($this->business_fields as $name) {
|
foreach ($this->business_fields as $name) {
|
||||||
$excel_header[] = $name;
|
$excel_header[] = $name;
|
||||||
@ -76,7 +81,7 @@ use app\common\exception\Tool;
|
|||||||
}
|
}
|
||||||
$data_str = "[\n{$data_str}]";
|
$data_str = "[\n{$data_str}]";
|
||||||
|
|
||||||
//模板字符构建并返回
|
//模板字符串构建并返回
|
||||||
return "
|
return "
|
||||||
/**
|
/**
|
||||||
* 导出Excel
|
* 导出Excel
|
||||||
@ -95,7 +100,7 @@ use app\common\exception\Tool;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建导入/下载模板表头模板字符
|
* 构建导入/下载模板表头模板字符串
|
||||||
*/
|
*/
|
||||||
private function buildImportDownloadFieldsTemp(): string
|
private function buildImportDownloadFieldsTemp(): string
|
||||||
{
|
{
|
||||||
@ -110,13 +115,13 @@ use app\common\exception\Tool;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建模型层导入方法模板字符
|
* 构建模型层导入方法模板字符串
|
||||||
*/
|
*/
|
||||||
private function buildImportFunTemp(): string
|
private function buildImportFunTemp(): string
|
||||||
{
|
{
|
||||||
if (!$this->is_import) return '';
|
if (!$this->is_import) return '';
|
||||||
|
|
||||||
//模板字符构建并返回
|
//模板字符串构建并返回
|
||||||
return "
|
return "
|
||||||
/**
|
/**
|
||||||
* 导入excel
|
* 导入excel
|
||||||
@ -132,9 +137,7 @@ use app\common\exception\Tool;
|
|||||||
\$excel = new Excel(\$file);
|
\$excel = new Excel(\$file);
|
||||||
\$data = \$excel->parseExcel(
|
\$data = \$excel->parseExcel(
|
||||||
Tool::getExcelRule(self::EXCELFIELD),
|
Tool::getExcelRule(self::EXCELFIELD),
|
||||||
[
|
['titleLine' => [1]]);
|
||||||
'titleLine' => [1]
|
|
||||||
]);
|
|
||||||
if (!\$data) throwErrorMsg('excel无数据', 1);
|
if (!\$data) throwErrorMsg('excel无数据', 1);
|
||||||
\$msg = [];
|
\$msg = [];
|
||||||
foreach (\$data as \$line => \$value) {
|
foreach (\$data as \$line => \$value) {
|
||||||
@ -155,14 +158,14 @@ use app\common\exception\Tool;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建模型层导入初始化方法模板字符
|
* 构建模型层导入初始化方法模板字符串
|
||||||
*/
|
*/
|
||||||
private function buildImportInitFunTemp(): string
|
private function buildImportInitFunTemp(): string
|
||||||
{
|
{
|
||||||
if (!$this->is_import) return '';
|
if (!$this->is_import) return '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (匿名函数)获取excel每行导入数据变量分配-模板字符
|
* (匿名函数)获取excel每行导入数据变量分配-模板字符串
|
||||||
*/
|
*/
|
||||||
$getImportAllocationTemp = function () {
|
$getImportAllocationTemp = function () {
|
||||||
$str = "";
|
$str = "";
|
||||||
@ -174,7 +177,7 @@ use app\common\exception\Tool;
|
|||||||
$import_allocation_temp = $getImportAllocationTemp();
|
$import_allocation_temp = $getImportAllocationTemp();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (匿名函数)获取新增的字段值们-模板字符
|
* (匿名函数)获取新增的字段值们-模板字符串
|
||||||
*/
|
*/
|
||||||
$getAddFieldsTemp = function () {
|
$getAddFieldsTemp = function () {
|
||||||
$str = "";
|
$str = "";
|
||||||
@ -185,7 +188,7 @@ use app\common\exception\Tool;
|
|||||||
};
|
};
|
||||||
$add_allocation_temp = $getAddFieldsTemp();
|
$add_allocation_temp = $getAddFieldsTemp();
|
||||||
|
|
||||||
//模板字符构建并返回
|
//模板字符串构建并返回
|
||||||
return "
|
return "
|
||||||
/**
|
/**
|
||||||
* 导入excel初始化
|
* 导入excel初始化
|
||||||
|
@ -29,7 +29,7 @@ class {$className} extends BaseController
|
|||||||
|
|
||||||
$query = Model{$className}::where($con)
|
$query = Model{$className}::where($con)
|
||||||
->field({$queryFields})
|
->field({$queryFields})
|
||||||
->order({$orderField}, {$orderMode});
|
->order('{$orderField}', '{$orderMode}');
|
||||||
|
|
||||||
return msg("获取{$functionName}列表成功!",$query);
|
return msg("获取{$functionName}列表成功!",$query);
|
||||||
}
|
}
|
||||||
|
@ -29,11 +29,9 @@ class {$className} extends BaseController
|
|||||||
|
|
||||||
$query = Model{$className}::where($con)
|
$query = Model{$className}::where($con)
|
||||||
->field({$queryFields})
|
->field({$queryFields})
|
||||||
->order({$orderField}, {$orderMode})
|
->order('{$orderField}', '{$orderMode}')
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
{$imgUrlPrefixPadding}
|
|
||||||
|
|
||||||
return msg(0, "获取{$functionName}列表成功!", [
|
return msg(0, "获取{$functionName}列表成功!", [
|
||||||
'data' => $query,
|
'data' => $query,
|
||||||
'count' => count($query)
|
'count' => count($query)
|
||||||
|
Loading…
Reference in New Issue
Block a user