diff --git a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php index 777288e35..510149e6f 100644 --- a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php +++ b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php @@ -74,7 +74,7 @@ class SystemCrud extends AuthController $fromField = $columnField = []; foreach ($data['tableField'] as $item) { - if ($item['is_table']) { + if ($item['is_table'] && !in_array($item['field_type'], ['addSoftDelete', 'addSoftDelete'])) { $columnField[] = [ 'field' => $item['field'], 'name' => $item['table_name'], @@ -146,6 +146,7 @@ class SystemCrud extends AuthController $tableField[] = [ 'field' => $item['name'], 'file_type' => $item['type'], + 'primaryKey' => (bool)$item['primaryKey'], 'default' => $item['default'], 'limit' => $item['limit'], 'comment' => $item['comment'], @@ -189,9 +190,18 @@ class SystemCrud extends AuthController } } + $softDelete = false; + foreach ((array)$info->field['tableField'] as $item) { + if ($item['addSoftDelete']) { + $softDelete = true; + break; + } + } + $make = $this->services->makeFile($info->table_name, $routeName, false, [ 'menuName' => $info->name, 'key' => $key, + 'softDelete' => $softDelete, 'fromField' => $info->field['fromField'] ?? [], 'columnField' => $info->field['columnField'] ?? [], ]); diff --git a/crmeb/app/services/system/SystemCrudServices.php b/crmeb/app/services/system/SystemCrudServices.php index 8e887972e..fa3d5fa63 100644 --- a/crmeb/app/services/system/SystemCrudServices.php +++ b/crmeb/app/services/system/SystemCrudServices.php @@ -233,10 +233,13 @@ class SystemCrudServices extends BaseServices $tableField = $this->valueReplace($data['tableField']); $filePath = $this->valueReplace($data['filePath']); - + $data['softDelete'] = false; //创建数据库 if ($tableField && !$data['isTable']) { - $this->makeDatebase($tableName, $tableComment, $tableField); + $tableCreateInfo = $this->makeDatebase($tableName, $tableComment, $tableField); + if ($tableCreateInfo['softDelete']) { + $data['softDelete'] = true; + } } if (in_array($tableName, self::NOT_CRUD_TABANAME)) { @@ -438,12 +441,16 @@ class SystemCrudServices extends BaseServices * @param string $tableName * @param string $tableComment * @param array $tableField + * @return array * @author 等风来 * @email 136327134@qq.com * @date 2023/4/7 */ public function makeDatebase(string $tableName, string $tableComment, array $tableField = []) { + $softDelete = false; + $timestamps = false; + $indexField = []; //创建表 $table = new Table($tableName, ['comment' => $tableComment], $this->getAdapter()); //创建字段 @@ -458,9 +465,11 @@ class SystemCrudServices extends BaseServices //创建伪删除 if ($item['file_type'] === 'addSoftDelete') { $table->addSoftDelete(); + $softDelete = true; } else if ($item['file_type'] === 'addTimestamps') { //创建修改和增加时间 $table->addTimestamps(); + $timestamps = true; } else { $option['comment'] = $item['comment']; $table->addColumn($item['field'], $this->changeTabelRule($item['file_type']), $option); @@ -468,12 +477,15 @@ class SystemCrudServices extends BaseServices } //创建索引 if (!empty($data['tableIndex'])) { + $indexField = $data['tableIndex']; foreach ($data['tableIndex'] as $item) { $table->addIndex($item); } } //执行创建 $table->create(); + + return compact('indexField', 'softDelete', 'timestamps'); } /** @@ -525,6 +537,7 @@ class SystemCrudServices extends BaseServices $viewRouter = app()->make(ViewRouter::class); [$routerContent, $routerPath] = $viewRouter->setFilePathName($filePath['router'] ?? '')->isMake($isMake)->handle($tableName, [ 'route' => $routeName, + 'menuName' => $options['menuName'], ]); //生成前台接口 $viewApi = app()->make(ViewApi::class); diff --git a/crmeb/crmeb/services/crud/Model.php b/crmeb/crmeb/services/crud/Model.php index 3a4a5a813..c61079915 100644 --- a/crmeb/crmeb/services/crud/Model.php +++ b/crmeb/crmeb/services/crud/Model.php @@ -42,16 +42,20 @@ class Model extends Make /** - * @author 等风来 - * @email 136327134@qq.com - * @date 2023/4/12 * @param string $name * @param array $options * @return array|mixed|void + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/12 */ public function handle(string $name, array $options = []) { $this->value['key'] = $options['key'] ?? 'id'; + if (isset($options['softDelete']) && $options['softDelete']) { + $this->value['use-php'] = "use think\model\concern\SoftDelete;\n"; + $this->value['content-php'] = $this->tab() . "use SoftDelete;\n"; + } return parent::handle($name, $options); } diff --git a/crmeb/crmeb/services/crud/ViewRouter.php b/crmeb/crmeb/services/crud/ViewRouter.php index bc8aae408..f56ce73f8 100644 --- a/crmeb/crmeb/services/crud/ViewRouter.php +++ b/crmeb/crmeb/services/crud/ViewRouter.php @@ -71,7 +71,7 @@ class ViewRouter extends Make $path = $options['path'] ?? ''; [$nameData, $content] = $this->getStubContent($name); - $menus = $options['menus'] ?? $name; + $menus = $options['menuName'] ?? $name; $route = $options['route'] ?? Str::snake($name); $pagePath = $options['pagePath'] ?? Str::camel($name); if (!$route) { diff --git a/crmeb/crmeb/services/crud/stubs/model/CrudModel.stub b/crmeb/crmeb/services/crud/stubs/model/CrudModel.stub index d6e871d99..924d79406 100644 --- a/crmeb/crmeb/services/crud/stubs/model/CrudModel.stub +++ b/crmeb/crmeb/services/crud/stubs/model/CrudModel.stub @@ -20,7 +20,7 @@ namespace app\model\crud{%path%}; use crmeb\basic\BaseModel; - +{%use-php%} /** * Class {%nameCamel%} * @date {%date%} @@ -28,7 +28,7 @@ use crmeb\basic\BaseModel; */ class {%nameCamel%} extends BaseModel { - +{%content-php%} /** * 表名 * @var string diff --git a/crmeb/crmeb/services/crud/stubs/view/router/modules/crud.stub b/crmeb/crmeb/services/crud/stubs/view/router/modules/crud.stub index 91c044055..5a3a5e33a 100644 --- a/crmeb/crmeb/services/crud/stubs/view/router/modules/crud.stub +++ b/crmeb/crmeb/services/crud/stubs/view/router/modules/crud.stub @@ -8,7 +8,7 @@ // | Author: CRMEB Team // +--------------------------------------------------------------------- -import BasicLayout from '@/components/main'; +import LayoutMain from '@/layout'; import setting from '@/setting' let routePre = setting.routePre @@ -24,7 +24,7 @@ export default { name: 'crud_{%name%}', header: '{%nameHeader%}', meta, - component: BasicLayout, + component: LayoutMain, children: [ { path: 'list', diff --git a/template/admin/src/pages/system/codeGeneration/components/FoundationFor.vue b/template/admin/src/pages/system/codeGeneration/components/FoundationFor.vue index e54a94860..8cd786712 100644 --- a/template/admin/src/pages/system/codeGeneration/components/FoundationFor.vue +++ b/template/admin/src/pages/system/codeGeneration/components/FoundationFor.vue @@ -1,7 +1,17 @@