diff --git a/internal/app/boot/custom_validations_boot.go b/internal/app/boot/custom_validations_boot.go new file mode 100644 index 0000000..4bedeac --- /dev/null +++ b/internal/app/boot/custom_validations_boot.go @@ -0,0 +1,108 @@ +package boot + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/util/gconv" + "github.com/gogf/gf/v2/util/gvalid" + "strconv" + "strings" +) + +func init() { + gvalid.RegisterRule("integer-array", IntegerArray) + gvalid.RegisterRule("float-array", FloatArray) + gvalid.RegisterRule("date-array", DateArray) + gvalid.RegisterRule("datetime-array", DatetimeArray) +} + +func IntegerArray(ctx context.Context, RI gvalid.RuleFuncInput) error { + if RI.Value.IsNil() { + return nil + } + + if RI.Value.IsSlice() { + return gerror.New(RI.Message) + } + for _, v := range RI.Value.Array() { + valueStr := strings.TrimSpace(gconv.String(v)) + if valueStr == "" { + continue + } + if _, err := strconv.Atoi(valueStr); err != nil { + continue + } + return gerror.New(RI.Message) + } + return nil +} + +func FloatArray(ctx context.Context, RI gvalid.RuleFuncInput) error { + if RI.Value.IsNil() { + return nil + } + if !RI.Value.IsSlice() { + return gerror.New(RI.Message) + } + for _, v := range RI.Value.Array() { + valueStr := strings.TrimSpace(gconv.String(v)) + if valueStr == "" { + continue + } + if _, err := strconv.ParseFloat(valueStr, 10); err == nil { + continue + } + return gerror.New(RI.Message) + } + return nil +} + +func DateArray(ctx context.Context, RI gvalid.RuleFuncInput) error { + if RI.Value.IsNil() { + return nil + } + if !RI.Value.IsSlice() { + return gerror.New(RI.Message) + } + for _, v := range RI.Value.Array() { + // support for time value, eg: gtime.Time/*gtime.Time, time.Time/*time.Time. + if _, ok := v.(gtime.Time); ok { + continue + } + valueStr := strings.TrimSpace(gconv.String(v)) + if valueStr == "" { + continue + } + if gregex.IsMatchString(`\d{4}[\.\-\_/]{0,1}\d{2}[\.\-\_/]{0,1}\d{2}`, valueStr) { + continue + } + return gerror.New(RI.Message) + } + return nil +} + +func DatetimeArray(ctx context.Context, RI gvalid.RuleFuncInput) error { + if RI.Value.IsNil() { + return nil + } + if !RI.Value.IsSlice() { + return gerror.New(RI.Message) + } + for _, v := range RI.Value.Array() { + // support for time value, eg: gtime.Time/*gtime.Time, time.Time/*time.Time. + if _, ok := v.(gtime.Time); ok { + continue + } + valueStr := strings.TrimSpace(gconv.String(v)) + if valueStr == "" { + continue + } + if _, err := gtime.StrToTimeFormat(valueStr, "Y-m-d H:i:s"); err == nil { + continue + } + return gerror.New(RI.Message) + } + return nil +} diff --git a/resource/template/vm/vue/list-vue.template b/resource/template/vm/vue/list-vue.template index 42627c4..9112746 100644 --- a/resource/template/vm/vue/list-vue.template +++ b/resource/template/vm/vue/list-vue.template @@ -12,7 +12,7 @@ {{$colIndex := 0}} {{range $index, $column := .table.QueryColumns}} - {{if and $column.IsQuery (ne $column.ColumnName "created_by") (ne $column.ColumnName "updated_by") (ne $column.ColumnName "created_at") (ne $column.ColumnName "updated_at") (ne $column.ColumnName "deleted_at")}} + {{if and $column.IsQuery (ne $column.ColumnName "created_by") (ne $column.ColumnName "updated_by") }} {{if eq $colIndex 2}} @@ -68,6 +68,7 @@ - - - - - {{end}} {{end}} {{if gt $colIndex 2}} diff --git a/resource/template/vm/vue/tree-vue.template b/resource/template/vm/vue/tree-vue.template index 2b18ff3..e8eb88a 100644 --- a/resource/template/vm/vue/tree-vue.template +++ b/resource/template/vm/vue/tree-vue.template @@ -15,7 +15,7 @@ {{$colIndex := 0}} {{range $index, $column := .table.QueryColumns}} - {{if and $column.IsQuery (ne $column.ColumnName "created_by") (ne $column.ColumnName "updated_by") (ne $column.ColumnName "created_at") (ne $column.ColumnName "updated_at") (ne $column.ColumnName "deleted_at")}} + {{if and $column.IsQuery (ne $column.ColumnName "created_by") (ne $column.ColumnName "updated_by")}} {{if eq $colIndex 2}} @@ -71,6 +71,7 @@ - - - - - {{end}} {{end}} {{if gt $colIndex 2}}