fix: 修正搜索时间范围传入ISO8601字符串导致MySQL查询出错,并优化nil切片len检查(S1009) (#2027)

* fix: 修正搜索时间范围传入ISO8601字符串导致MySQL查询出错,并优化nil切片len检查(S1009) (#2026)

* fix:时间范围修改接受参数

---------

Co-authored-by: hang666 <44329474+hang666@users.noreply.github.com>
This commit is contained in:
PiexlMax(奇淼
2025-05-17 15:41:37 +08:00
committed by GitHub
parent 1f3a8ea2eb
commit b731b9df78
5 changed files with 10 additions and 10 deletions

View File

@@ -15,14 +15,14 @@ package request
import (
{{- if not .OnlyTemplate }}
"{{.Module}}/model/common/request"
{{ if .HasSearchTimer}}"time"{{ end }}
{{ if or .HasSearchTimer .GvaModel }}"time"{{ end }}
{{- end }}
)
type {{.StructName}}Search struct{
{{- if not .OnlyTemplate}}
{{- if .GvaModel }}
CreatedAtRange []string `json:"createdAtRange" form:"createdAtRange[]"`
CreatedAtRange []time.Time `json:"createdAtRange" form:"createdAtRange[]"`
{{- end }}
{{- range .Fields}}
{{- if ne .FieldSearchType ""}}

View File

@@ -148,7 +148,7 @@ func ({{.Abbreviation}}Service *{{.StructName}}Service)Get{{.StructName}}InfoLis
var {{.Abbreviation}}s []{{.Package}}.{{.StructName}}
//
{{- if .GvaModel }}
if info.CreatedAtRange !=nil && len(info.CreatedAtRange) == 2 {
if len(info.CreatedAtRange) == 2 {
db = db.Where("created_at BETWEEN ? AND ?", info.CreatedAtRange[0], info.CreatedAtRange[1])
}
{{- end }}

View File

@@ -14,14 +14,14 @@ package request
{{- if not .OnlyTemplate}}
import (
"{{.Module}}/model/common/request"
{{ if .HasSearchTimer}}"time"{{ end }}
{{ if or .HasSearchTimer .GvaModel }}"time"{{ end }}
)
{{- end}}
type {{.StructName}}Search struct{
{{- if not .OnlyTemplate}}
{{- if .GvaModel }}
CreatedAtRange []string `json:"createdAtRange" form:"createdAtRange[]"`
CreatedAtRange []time.Time `json:"createdAtRange" form:"createdAtRange[]"`
{{- end }}
{{- range .Fields}}
{{- if ne .FieldSearchType ""}}

View File

@@ -155,7 +155,7 @@ func (s *{{.Abbreviation}}) Get{{.StructName}}InfoList(ctx context.Context, info
var {{.Abbreviation}}s []model.{{.StructName}}
//
{{- if .GvaModel }}
if info.CreatedAtRange !=nil && len(info.CreatedAtRange) == 2 {
if len(info.CreatedAtRange) == 2 {
db = db.Where("created_at BETWEEN ? AND ?", info.CreatedAtRange[0], info.CreatedAtRange[1])
}
{{- end }}

View File

@@ -137,9 +137,9 @@ func GenerateSearchConditions(fields []*systemReq.AutoCodeField) string {
} else if field.FieldSearchType == "BETWEEN" || field.FieldSearchType == "NOT BETWEEN" {
if field.FieldType == "time.Time" {
condition = fmt.Sprintf(`
if info.%sRange != nil && len(info.%sRange) == 2 {
db = db.Where("%s %s ? AND ? ", info.%sRange[0], info.%sRange[1])
}`,
if len(info.%sRange) == 2 {
db = db.Where("%s %s ? AND ? ", info.%sRange[0], info.%sRange[1])
}`,
field.FieldName, field.FieldName, field.ColumnName, field.FieldSearchType, field.FieldName, field.FieldName)
} else {
condition = fmt.Sprintf(`
@@ -677,7 +677,7 @@ func GenerateSearchField(field systemReq.AutoCodeField) string {
// 生成范围搜索字段
// time 的情况
if field.FieldType == "time.Time" {
result = fmt.Sprintf("%sRange []string `json:\"%sRange\" form:\"%sRange[]\"`",
result = fmt.Sprintf("%sRange []time.Time `json:\"%sRange\" form:\"%sRange[]\"`",
field.FieldName, field.FieldJson, field.FieldJson)
} else {
startField := fmt.Sprintf("Start%s *%s `json:\"start%s\" form:\"start%s\"`",