diff --git a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php index 8399bff66..5678f4e89 100644 --- a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php +++ b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php @@ -317,24 +317,41 @@ class SystemCrud extends AuthController if ($newColumn) { $info['field']['tableField'] = array_merge($newColumn, $info['field']['tableField']); } - $keyInfo = []; - $deleteInfo = []; - foreach ($info['field']['tableField'] as $key => $item) { + + $keyInfo = $deleteInfo = $createInfo = $updateInfo = []; + $tableField = []; + foreach ($info['field']['tableField'] as $item) { if ($item['primaryKey']) { $keyInfo = $item; - unset($info['field']['tableField'][$key]); + continue; } - if ($item['field_type'] == 'addSoftDelete') { + if ($item['field_type'] == 'timestamp' && $item['field'] === 'delete_time') { $deleteInfo = $item; - unset($info['field']['tableField'][$key]); + continue; } + if ($item['field_type'] == 'timestamp' && $item['field'] === 'create_time') { + $createInfo = $item; + continue; + } + if ($item['field_type'] == 'timestamp' && $item['field'] === 'update_time') { + $updateInfo = $item; + continue; + } + $tableField[] = $item; } if ($keyInfo) { - array_unshift($info['field']['tableField'], $keyInfo); + array_unshift($tableField, $keyInfo); + } + if ($createInfo) { + array_push($tableField, $createInfo); + } + if ($updateInfo) { + array_push($tableField, $updateInfo); } if ($deleteInfo) { - array_push($info['field']['tableField'], $deleteInfo); + array_push($tableField, $deleteInfo); } + $info['field']['tableField'] = $tableField; $info['field']['pid'] = (int)$info['field']['pid']; return app('json')->success(['file' => $data, 'crudInfo' => $info]); } diff --git a/crmeb/app/services/system/SystemCrudServices.php b/crmeb/app/services/system/SystemCrudServices.php index b66fa4d22..3712817da 100644 --- a/crmeb/app/services/system/SystemCrudServices.php +++ b/crmeb/app/services/system/SystemCrudServices.php @@ -352,7 +352,21 @@ class SystemCrudServices extends BaseServices if (in_array(strtolower($type), ['text', 'longtext', 'tinytext'])) { $sql = "ALTER TABLE `$tableName` ADD `$field` $type NULL COMMENT '$comment' $after;"; } else { - $sql = "ALTER TABLE `$tableName` ADD `$field` $type($limit) NOT NULL DEFAULT '$default' COMMENT '$comment' $after;"; + $defaultSql = "NOT NULL DEFAULT '$default'"; + //处理时间字段默认值 + if (in_array(strtolower($type), ['datetime', 'timestamp', 'time', 'date', 'year'])) { + switch ($field) { + case 'delete_time': + $defaultSql = 'NULL DEFAULT NULL'; + break; + case 'create_time': + case 'update_time': + $defaultSql = 'NOT NULL DEFAULT CURRENT_TIMESTAMP'; + break; + } + } + $limitSql = $limit ? '(' . $limit . ')' : ''; + $sql = "ALTER TABLE `$tableName` ADD `$field` $type$limitSql $defaultSql COMMENT '$comment' $after;"; } return Db::execute($sql); }