liaofei 2 лет назад
Родитель
Сommit
8529bb7543

+ 25 - 8
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]);
     }

+ 15 - 1
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);
     }